我的查询是关于创建一个正则表达式来捕获:
- 0 个或更多子类别
- 0 或 1 分页索引
- 0 或 1 个产品 ID
这可以通过将所有内容作为单个参数读取并将此参数传递给 php 来轻松完成,但是这将意味着大量代码和性能损失,而 htaccess+regex 将使用一行代码完成此操作。
例子:
catalog/
显示从第 0 页开始的所有产品
catalog/dolls/barbie/malibu/
显示从第 0 页开始的所有 malibu 芭比娃娃
catalog/dolls/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
我试过像这样的目录/娃娃/芭比娃娃/id-1234/这样的网址;但是捕获 1 美元会产生 doll/barbie/id-1234/ 和 id-1234/id-345/id-145/ 之类的东西将是“有效”返回 145,因此会损害 seo 放置重复页面,这个正则表达式甚至不处理分页...我使用 RegexBuddy3(非常有用,必须购买),但 apache+httacess 在处理超长表达式时的行为并非 100% 相同。