[英]Conflicting mod_rewrite rules
這是我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
(當前根據需要顯示URL,但返回travel.php內容而不是travel2.php)
我最初在travel.php規則中有一個ID號,刪除該ID號會導致沖突。 我知道其中兩個規則具有相同的模式,那么如何最好地獲得所需的結果? 謝謝你的幫助。 :)
最后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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.