将索引和索引.php视为同一文件


Treating index and index.php as the same file

我正在使用Apache 2.2.22和PHP 5.3.10进行PHP项目,我遇到了索引和索引.php被视为同一文件的问题。

我有一个管理员/索引.php它重定向到管理员/索引,以允许我在 .htaccess 中的mod_rewrite规则接管并将请求重新路由到自定义框架中。 问题是,当浏览器转到 admin/index 时,它会进入无限重定向循环,因为请求正在发送到 admin/index.php后者会重定向到 admin/index

我尝试删除 htaccess 文件以查看我的 mod_rewrite 规则是否存在导致它的问题,并且它没有改变任何东西。 它只是无休止地重定向到管理员/索引。

我以前从未听说过这种行为,浏览一些 Google 结果并浏览 apache 配置文件并没有显示任何真正明显的东西。 以前有没有人见过这个并知道如何解决它?

编辑:下面是索引用于重定向到索引的代码.php。

<?php
    header("Location: index");
    die();

这可能是由于启用了多视图:

多视图的效果如下:如果服务器收到 请求/some/dir/foo,如果/some/dir 启用了多视图,并且 /some/dir/foo 不存在,则服务器读取目录 查找名为 foo.* 的文件,并有效地伪造类型映射 命名所有这些文件,为它们分配相同的媒体类型,以及 如果客户端要求以下之一,它将具有的内容编码 他们的名字。然后,它选择与客户的最佳匹配 要求。

— https://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews

尝试向.htaccess添加Options -MultiViews

在 Apache 中启用重写日志记录并提高日志级别。这样,apache 会一步一步地准确地告诉你,什么请求是如何重写的,以什么顺序以及为什么。