[英]Url-rewrite with no fixed structure
我有這3個網址類型:
“頁面”總是在這里,但另外兩個不是
怎樣才能讓它每次都以這種方式運作?
RewriteRule ^(.*)/(.*)?(.*)$ $1.php?action=$2&$3
對於這個,如果最后兩個部分不在這里,停止工作......
謝謝!
RewriteRule ^(.*)/(.*)$ $1.php?action=$2 [QSA,L]
RewriteRule ^(.*)$ $1.php [QSA,L]
你需要不止一個規則(你可以用一個但是可讀性,2個會更好。
首先,忘記查詢字符串。 您沒有操縱它, [QSA]
標志可以將其附加到生成的URL。
您現在需要兩個規則,一個用於處理“action”變體,另一個用於處理頁面名稱:
RewriteRule ^[^/]+$ $0.php [L]
RewriteRule ^([^/]+)/([^/]+) $1.php?action=$2 [L,QSA]
但是 ,這將導致重寫循環。 mod_rewrite的工作方式意味着規則幾乎總是至少執行兩次,而在第二次(以及所有后續)迭代中,第一條規則將匹配重寫的URL。
所以我們需要更具體一點:
RewriteRule ^(?:(?!\.php$)[^/])+$ $0.php [L]
RewriteRule ^([^/]+)/([^/]+)$ $1.php?action=$2 [L,QSA]
此前瞻將確保第一個規則僅匹配不以.php
結尾的URI。
請注意, QSA
標志僅適用於第二個規則。 這是因為它只在重寫的URI改變查詢字符串時才有效 - 默認行為(當查詢字符串未被更改時)是附加原始查詢字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.