8

我的.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,它也无法正常工作。

问题是什么?

4

2 回答 2

30

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

改用[QSA,L,NC],这样比较就以不区分大小写的方式进行

于 2013-05-16T05:55:25.730 回答
1

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

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

瞧,你是固定的。

mod_speling.so 与此无关。

于 2013-05-16T05:36:33.357 回答