簡體   English   中英

沖突的mod_rewrite規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM