【问题标题】:How would I make Apache case insensitive using .htaccess?如何使用 .htaccess 使 Apache 不区分大小写?
【发布时间】:2013-06-20 21:10:48
【问题描述】:

我最近从 IIS 切换到 Apache,不幸的是我的一些链接有大小写问题。我见过很多人谈论如何将 url 重写为全部小写或全部大写,但我需要一些东西来使 Apache 不区分大小写。这对 .htaccess 可行吗?

【问题讨论】:

  • 你试过this method吗?我不认为这可以用.htaccess 来完成;这不符合这个文件的目的,但我可能错了。

标签: apache .htaccess case-insensitive capitalization


【解决方案1】:

添加

CheckSpelling on

到您的.htaccess 文件 当然是在启用 RewriteEngine 之后

所以最终的代码是

RewriteEngine on
CheckSpelling on

我想这是最好和最安全的方式。

别忘了改变

AllowOverride none

AllowOverride All

在您的 httpd.conf 文件中,允许 .htaccess 文件正常工作。

【讨论】:

  • 每当我添加 CheckSpelling on 时,我都会在每个页面上收到 500 内部服务器错误
  • 它对我来说就像一个魅力。尝试删除 .htaccess 文件中除 RewriteEngine On CheckSpelling On 之外的所有其他内容,并确保您的 httpd.conf 文件中的 AllowOverride All
  • 我已经删除了其他所有内容。我唯一没有做的是 httpd.conf 文件,因为我不知道如何访问它。我正在与dreamhost 共享主机。有没有办法访问该文件,还是我必须找到另一种方式?
  • 那么,尝试联系他们,看看他们是否允许使用 .htaccess 并询问他们是否加载了 mod_rewrite
  • 对于其他看到此内容的人,您还需要启用 mod_speling 模块。
【解决方案2】:

如果CheckSpelling 不适合您并且您正在使用 PHP,您可以在 404 页面中添加 PHP 重定向以重定向到 URL 的小写版本。首先,如果您还没有这样做,请将以下代码添加到您的 .htaccess 文件中(如果需要,您可以将该文件称为 404.php 以外的其他名称,但它必须是 PHP 文件):

ErrorDocument 404 /404.php

然后在404.php开头添加如下代码(如果你使用的是HTTPS,将第二行的http://改为https://):

if(preg_match("/[A-Z]/", $_SERVER["REQUEST_URI"])){
    header("location:http://" . $_SERVER["HTTP_HOST"] . strtolower($_SERVER["REQUEST_URI"]));
    exit();
}

此代码使用一个简单的正则表达式来检查请求的 URI 是否包含大写字母,如果是,它会重定向到相同的页面,但使用小写字母。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2011-02-01
    • 1970-01-01
    • 2011-10-14
    • 2012-05-25
    • 2020-11-24
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多