代码之家  ›  专栏  ›  技术社区  ›  Jesse Orange

.htaccess使用多个参数重写

  •  1
  • Jesse Orange  · 技术社区  · 7 年前

    我有个规矩 .htaccess 这使得搜索引擎优化等目的的文章的url更加友好。

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(news-and-views)/(.+).php /$1/article.php?title=$2 [L]
    

    已转换此URL:

    /news-and-views/going-for-brokering.php

    在应用程序中:

    /news-and-views/article.php?title=going-for-brokering

    现在我需要一个在标题前有ID的URL,如下所示:

    /news-and-views/123456789/going-for-brokering.php

    所以我尝试了以下规则:

    RewriteRule ^(news-and-views)/(.+)/(.+).php /$1/article.php?Id=$2&title=$3 [L]

    然而,这不起作用,我是否误解了括号的用法,因为我认为括号之间的所有内容都被认为是右侧的变量?

    我甚至认为不太具体的规则高于更具体的规则。

    1 回复  |  直到 7 年前
        1
  •  2
  •   BenM    7 年前

    你需要小心规则的顺序,因为你的第一条规则也会匹配 /news-and-views/123456789/going-for-brokering.php . 更改规则如下:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(news-and-views)/([^/]+).php /$1/article.php?title=$2 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(news-and-views)/([0-9]+)/([^/]+).php /$1/article.php?Id=$2&title=$3 [L]
    
    推荐文章