.htaccess用多个参数重写

时间:2018-08-01 13:26:40

标签: .htaccess

我在.htaccess中有一条规则,使文章的URL更加友好,以查找SEO之类的目的。

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

哪个网址已转换:

/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 个答案:

答案 0 :(得分:2)

您需要注意规则的顺序,因为您的第一个规则也将与/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]