我已經遍佈整個stackoverflow搜索,但沒有一個答案似乎適用於這種情況。我的httpd.conf文件中已經有了很多mod_rewrite規則。我剛剛發現,谷歌已收錄我的非重寫的網址之一,在它的查詢字符串:mod_rewrite重定向URL與查詢字符串
http://domain.com/?state=arizona
我想使用mod_rewrite做301重定向到該網址:
問題是,在我的重寫規則中,第二個URL正在被重寫以將查詢變量傳遞給WordPress。它最終得到改寫爲:
http://domain.com/index.php?state=arizona
哪一個是正確的功能。到目前爲止,我嘗試過的所有東西都沒有成功,或者讓我陷入無盡的重寫循環。這就是我現在所擁有的,這是陷入一個循環:
RewriteCond %{QUERY_STRING} state=arizona [NC]
RewriteRule .* http://domain.com/arizona [R=301,L]
#older rewrite rule that passes query string based on URL:
RewriteRule ^([A-Za-z-]+)$ index.php?state=$1 [L]
這給了我無盡的重寫循環,帶我到這個網址: http://domain.com/arizona?state=arizona
然後我嘗試這樣做:
RewriteRule .* http://domain.com/arizona? [R=301,L]
它擺脫了URL中的查詢字符串,但仍然創建一個循環。
這也行不通,因爲我進入了一個重寫循環。 – meeble
您可能需要將'RewriteRule ^([\ w-] +)$ index.php?state = $ 1 [L]'加緊到'RewriteRule ^([a-z _] +)$ index.php?state = $ 1 [L]'。 index.php將不匹配,不會重定向。 – Wige
「點」字符如何匹配字符類[\ w-]?無論如何,我改變了上面,但仍然有相同的循環。 – meeble