.htaccess区分大小写和mod_rewrite

时间:2013-05-16 05:34:21

标签: .htaccess

我的.htaccess:

RewriteEngine On
CheckCaseOnly On
CheckSpelling On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^Blog/(.*?)$ /Me/profile.php?username=$1 [QSA,L]

问题是,当URL如下所示时,它可以工作:

localhost/Me/Blog/ExampleUser

但是当它像这样时它不起作用(请注意'Blog'中的'b'是小写的?):

localhost/Me/blog/ExampleUser

我在新版XAMPP上运行它。即使我在PHP配置上有mod_speling.so,它仍然无法工作。

有什么问题?

2 个答案:

答案 0 :(得分:24)

  

使用 [NC] 标志会使RewriteRule以不区分大小写的方式匹配。也就是说,它不关心字母在匹配的URI中是以大写形式还是小写形式出现。

请尝试 [QSA,L,NC] ,以便进行比较in a case-insensitive manner

答案 1 :(得分:0)

问题是重写规则区分大小写。所以你的重写规则应该是:

RewriteRule ^[Bb]log/(.*?)$ /Me/profile.php?username=$1 [QSA,L]

瞧,你已经修好了。

mod_speling.so没有任何关系。