我在.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]
但是,这不起作用,我是否误解了括号的使用,因为我认为括号之间的所有内容都被认为是右侧的变量?
我在想,可能是特定性较低的规则高于特定性的规则。
答案 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]