gpt4 book ai didi

php - htaccess 正则表达式 vs php 手动参数解析

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:46:10 25 4
gpt4 key购买 nike

我的查询是关于创建一个正则表达式来捕获:

  1. 0 个或更多子类别
  2. 0 或 1 个分页索引
  3. 0 或 1 个产品 ID

这可以通过将所有内容作为单个参数读取并将此参数传递给 php 来轻松完成,但是这将意味着大量代码和性能损失,而 htaccess+regex 将使用一行代码完成此操作。

例子:

目录/
显示从第 0 页开始的所有产品

目录/娃娃/芭比娃娃/马里布/
显示从第 0 页开始的所有 malibu 芭比娃娃

目录/娃娃/gijoe/p_5/id_99
显示产品 id_99。但是,页面和类别会保留为显示为导航链接。

目录/娃娃/p_3
目录/娃娃/芭比娃娃/id_456

RewriteRule ^catalog/(([^/:*?"<>|\r\n]*/)*)(id-([0-9]{1,4}+))*$ catalog.php?category=$1&id=$3

我试过像 catalog/doll/barbie/id-1234/这样的 url;然而,捕获 $1 会产生 doll/barbie/id-1234/而像 id-1234/id-345/id-145/这样的东西将是“有效的”返回 145 因此会损害重复页面的 seo 放置,这个正则表达式甚至不处理分页...我使用 RegexBuddy3(非常有用,必须购买)但是 apache+httacess 在处理 über 长表达式时不会表现出 100% 相同。

最佳答案

最简单的方法是在 URL 中同时传递类别和产品的 ID您可以使 URL 看起来像这样
catalog/dolls-12/- 您现在正在类别 ID 12 的目录中查看
catalog/dolls/barbie/malibu-33/- 您现在正在类别 id 33 的目录中查看
catalog/dolls/barbie/malibu-33/barbie-450 - 您现在正在目录中查找类别 ID 33 和产品 450

这一切都应该通过 htaccess 中的 3 条规则来完成。如果您收到一个看起来像
的链接catalogue/(.*)-number/(.*)-number 您正在查看某个类别中的产品。
catalogue/(.*)-number 那么你正在看的是一个类别
catalogue/- 您正在查看整个目录。

您不需要捕获所有内容,只需捕获数字,这些数字已经告诉您您所在的位置。

关于php - htaccess 正则表达式 vs php 手动参数解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com