【问题标题】:.htaccess case sensitive and mod_rewrite.htaccess 区分大小写和 mod_rewrite
【发布时间】:2013-05-16 05:34:21
【问题描述】:

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

有什么问题?

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

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

    改用[QSA,L,NC],这样比较是in a case-insensitive manner

    【讨论】:

    • 你太棒了!谢谢您的帮助! :)
    【解决方案2】:

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

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

    瞧,你是固定的。

    mod_speling.so 与此无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 2020-02-18
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多