簡體   English   中英

在HTACCESS中從查詢字符串重定向到URL

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

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