[英]Redirecting in HTACCESS from Query String to URL
我正在嘗試將帶有查詢字符串的URL重定向到沒有查詢字符串的URL,但是,我想使用查詢字符串中的值。
在下面的示例中,我使用的是單個狀態,但是我希望它是動態的,這意味着它將解析帶有查詢字符串的所有URL到干凈的URL,該URL仍然包含查詢字符串中的值。
Example: http://www.mywebsite.com/?state=CA redirects to http://www.mywebsite.com/CA/
我很累,將以下信息添加到我的HTACCESS文件中,但是沒有運氣:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?state=([a-z]+)&type=([a-z\-]+)
RewriteRule ^ /%1/%2? [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?state=([a-z]+)($|\ )
RewriteRule ^ /%1? [L]
這些工作正常,但是我必須輸入要避免的每個重定向:
RewriteCond %{QUERY_STRING} state=FL
RewriteRule ^$ "http://www.mywebsite.com/fl/?" [R=301,L]
RewriteCond %{QUERY_STRING} state=RI
RewriteRule ^$ "http://www.mywebsite.com/ri/?" [R=301,L]
有任何想法嗎? 我在Apache上使用WordPress。 我相信一切都是最新的。
原始規則不起作用的原因是因為看起來您的狀態是:
state=FL
FL
永遠不會匹配正則表達式[az]+
,因為[az]
字面意思是任何小寫字母,而F和L都不是小寫。 嘗試:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?state=([a-z]+)&type=([a-z\-]+) [NC]
RewriteRule ^ /%1/%2? [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?state=([a-z]+)($|\ ) [NC]
RewriteRule ^ /%1? [L,R=301]
因此條件中的[NC]
標志使正則表達式不區分大小寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.