将index.php作为同一文件处理

时间:2012-06-26 21:59:29

标签: php apache .htaccess mod-rewrite indexing

我正在使用Apache 2.2.22和PHP 5.3.10开发一个PHP项目,我遇到的问题是index和index.php被视为同一个文件。

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

我已经尝试删除htaccess文件以查看我的mod_rewrite规则是否存在导致它的问题并且它没有改变任何内容。它只是无休止地重定向到admin / index。

我之前从未听说过这种行为,浏览一些谷歌搜索结果并浏览apache配置文件并未显示任何真正明显的信息。有没有人见过这个,知道如何修复它?

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

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

2 个答案:

答案 0 :(得分:1)

这可能是由于MultiViews已启用:

  

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

     

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

尝试将Options -MultiViews添加到.htaccess

答案 1 :(得分:0)

启用重写在Apache内部记录并提高日志级别。就这样,apache会一步一步地告诉你,重写了什么请求,按顺序和原因。