我的查询是关于创建要捕获的正则表达式:
这可以通过将所有内容作为单个参数读取并且将此参数传递给php来轻松完成,但是这意味着大量的代码和性能命中,而htaccess + regex将使用单行代码执行此操作。
示例:
目录/
显示从第0页开始的所有产品
目录/娃娃/芭比/马里布/
显示所有malibu芭比娃娃从第0页开始
目录/娃娃/ GIJOE / p_5 / id_99
显示产品id_99。但是,页面和类别将保持显示为导航链接。
catalog / dolls / p_3
catalog / dolls / barbie / id_456
RewriteRule ^catalog/(([^/:*?"<>|\r\n]*/)*)(id-([0-9]{1,4}+))*$ catalog.php?category=$1&id=$3
我试过像目录/娃娃/芭比娃娃/ id-1234 /这样的网址;然而捕获1美元将产生娃娃/芭比/ id-1234 /并且像id-1234 / id-345 / id-145 /这样的东西将是'有效'返回145因此伤害了重复页面的seo位置,这个正则表达式甚至不处理分页...我使用RegexBuddy3(非常有用,必须购买)但是apache + httacess在处理über长表达式时表现不同100%。
答案 0 :(得分:0)
最简单的方法是在URL中传递类别和产品的ID
您可以使URL看起来像这样
catalog / dolls-12 / - 您现在正在查看类别id 12的目录
目录/娃娃/芭比/马里布-33 / - 您正在查看的目录类别ID 33
目录/娃娃/芭比/ malibu-33 / barbie-450 - 您现在正在查看的目录类别ID 33和产品450
这应该在htaccess中使用3个规则完成。如果您收到的链接看起来像是
catalog /(.*)- number /(.*)-您正在查看某个类别中的产品的数字
目录/(.*)-数字然后你正在看一个类别
目录/ - 您正在查看整个目录。
你不需要捕捉所有东西,只需要捕捉数字,那些已经告诉你你在哪里。