我的.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,它仍然无法工作。
有什么问题?
答案 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没有任何关系。