17

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

4

2 回答 2

13

添加

CheckSpelling on

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

所以最终的代码将是

RewriteEngine on
CheckSpelling on

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

不要忘记改变

AllowOverride none

AllowOverride All

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

于 2013-10-11T04:43:45.187 回答
1

如果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 是否包含大写字母,如果是,它会重定向到相同的页面,但使用小写字母。

于 2019-02-05T13:53:40.270 回答