Apache mod_rewrite 在升级至 2.4.18 时停止工作

Apache mod_rewrite 在升级至 2.4.18 时停止工作

我在 OS X 上运行 Apache 2.4.18(Unix)。

有趣的是,此配置在 Apache 2.2.15 上运行良好

我正在尝试访问域上的 /foo/local,我想将其重写为 /index.php/foo/local。

我遇到的问题是,在 Web 根目录下有一个 foo.php 文件,而 apache 似乎只想将流量发送到 /foo.php/local。

这是我在 apache 中配置不正确吗?

我的重写规则如下:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]

Web 根目录的 apache 配置是:

    <Directory />
            Options Indexes Includes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    </Directory>

我做了一些初步调试,发现 /foo/local 的 REQUEST_FILENAME 是 /path/to/webroot/foo.php

任何帮助将不胜感激

答案1

这看上去像是因 引起的MultiViews

MultiViews导致请求foo启动对任何以 开头的foo.浏览器可以理解的文件的搜索。当它找到 时foo.php,就会提供该文件。

只需将其从您的配置中删除即可。

相关内容