簡體   English   中英

使用htaccess將網址轉換為小寫,查詢字符串除外

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

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