这是我的htaccess文件中的完整重写代码集,但我只是在最后3条规则中遇到冲突问题。最终规则写下我想要的URL,但返回travel.php而不是travel2.php
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{http_host} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^journal/([^/]*)$ /journal2.php?url=$1 [L]
RewriteRule ^travel/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$ travel.php?country=$1&url_string=$2
RewriteRule ^travel/([a-zA-Z0-9-]*)$ /travel2.php?cat=$1
RewriteRule ^travel/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$ travel2.php?cat=$1&subcat=$2
这是我在过去3年之后所做的事情:
/travel/country/title-url-string
(目前有效并且显示正确的内容)
/travel/category
(目前有效并且显示正确的内容)
/travel/category/subcat
(当前显示我想要的网址,但返回travel.php内容而不是travel2.php)
我最初在travel.php规则中有一个ID号,删除它导致了冲突。我知道有两个规则具有相同的模式,那么我怎样才能最好地获得我想要的结果呢?谢谢你的帮助。 :)
答案 0 :(得分:1)
从最近3次重写规则:
1& 3检查相同的模式,第一个模式始终生效。
此外,由于您的类别和国家/地区值在此处无法相互区分,我建议在网址中附加唯一标识符,如下所示:
RewriteRule ^travel/country-([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$ travel.php?country=$1&url_string=$2
RewriteRule ^travel/category-([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)$ travel2.php?cat=$1&subcat=$2
所以你的匹配网址是:
/travel/country-countryname/title-url-string
/travel/category-categoryname/subcat