[英]Convert url to lower case using htaccess except query string
我正在為htaccess問題而苦苦掙扎。
我需要將所有URL從大寫轉換為小寫。 但是,僅查詢字符串應該是相同的。
例如,
www.tESTUrl.com/sOMePath/?q=SomeStringHere
應該轉換為
www.testurl.com/somepath/?q=SomeStringHere
請幫助解決此問題。 提前致謝。
首先,您必須將其添加到您的httpd.conf中:
RewriteMap lc int:tolower
然后將以下代碼粘貼到您的.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}} [L,R=301]
這段代碼將網址改寫為
www.tESTUrl.com/sOMePath/?q=SomeStringHere
到www.testurl.com/somepath/?q=SomeStringHere
首先,您需要在httpd.conf
添加此行,以定義RewriteMap
來處理小寫轉換:
RewriteMap lc int:tolower
然后在您的根.htaccess中添加以下規則:
RewriteEngine On
RewriteRule ^(.*?[A-Z]+.*)$ /${lc:$1} [L,NE,R=302]
這不會影響QUERY_STRING
。
我相信,調整此處給出的答案可以www.tESTUrl.com/
等式的www.tESTUrl.com/
主機名部分:
RewriteCond %{HTTP_HOST} !^(.+\.)?(.+)?$
RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L]
然后,我認為這應該適用於sOMePath/
路徑:
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z]+.*)/?(.*)$ ${lc:$1}/?q=$2 [R]
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}}?${QUERY_STRING} [L,R=301]
第二行不是必需的,但如果將來要小寫查詢字符串,則很有用。 我只是將其填寫完整。
您必須將其添加到您的httpd.conf中:
RewriteMap lc int:tolower
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.