2012-05-05 24 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]