htaccess regex vs php手动参数解析

时间:2012-12-20 04:21:09

标签: php regex .htaccess mod-rewrite seo

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

  1. 0或更多子类别
  2. 0或1分页索引
  3. 0或1产品ID
  4. 这可以通过将所有内容作为单个参数读取并且将此参数传递给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%。

1 个答案:

答案 0 :(得分:0)

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

这应该在htaccess中使用3个规则完成。如果您收到的链接看起来像是 catalog /(.*)- number /(.*)-您正在查看某个类别中的产品的数字 目录/(.*)-数字然后你正在看一个类别
目录/ - 您正在查看整个目录。

你不需要捕捉所有东西,只需要捕捉数字,那些已经告诉你你在哪里。