2012-05-05 79 views
0

我在我的.htaccess重寫URL爲全部小寫

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/.]+)/?(.*)$ /$1.php/$2 [QSA,L] 
RewriteRule ^api/([a-z]+)/([a-z]+) /api/$1_$2.php 

這個重寫規則如何修改這個改變我的網址都爲小寫?

即此:

www.mysite.com/ThisURL/SHOULD/be_all_lowercse 

應該

www.mysite.com/thisurl/should/be_all_lowercase 
+0

可能重複(http://stackoverflow.com/questions/2923658/convert-to-lowercase-in-a-mod-rewrite-rule) –

回答

1

定義int型(內部)的RewriteMap指令引用tolower函數,並將其稱爲您想要執行的操作lowercasing:

RewriteMap lc int:tolower 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/.]+)/?(.*)$ /${lc:$1}.php/${lc:$2} [QSA,L] 
RewriteRule ^api/([a-z]+)/([a-z]+) /api/${lc:$1}_${lc:$2}.php} 
[轉換在mod_rewrite的規則爲小寫]
+0

嗨馬克。當我使用上面的示例時,出現500錯誤。任何想法爲什麼? –

+0

可能只能使用變量作爲函數參數。嘗試以上。 –

+0

仍然是500錯誤。我現在有了總體想法。我會玩。謝謝您的幫助! –

2

article介紹如何做到這一點:

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L]