我在 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
,就会提供该文件。
只需将其从您的配置中删除即可。