尽管重写规则匹配,但返回 404

尽管重写规则匹配,但返回 404

我有一条重写规则,将所有请求发送到index.php

RewriteRule ^.*$ index.php [NC,L]

(除此以外RewriteEngine On,这就是文件中的全部内容.htaccess

它可以工作,除非请求路径以 开头index/,在这种情况下结果为404 Not Found

如果我将文件名更改index.phpindex2.php(并将重写规则与之匹配),它会再次开始工作,因此当请求路径的第一段等于目标文件的第一段时,显然存在冲突

日志mod_rewrite包含以下内容(请求时/index/hello失败):

add path info postfix: /path/to/index.php -> /path/to/index.php/hello
strip per-dir prefix: /path/to/index.php/hello -> index.php/hello
applying pattern '^.*$' to uri 'index.php/hello'
rewrite 'index.php/hello' -> 'index.php'
add per-dir prefix: index.php -> /path/to/index.php
initial URL equal rewritten URL: /path/to/index.php [IGNORING REWRITE]

(为了便于阅读,删除或修改了一些日志信息。)

我的服务器是Apache/2.2.22

注意:在我重新在新服务器上安装 Debian 之前,此网站(包括.htaccess文件和index.php文件)一直运行正常,因此我假设存在某种配置冲突或版本错误导致现在出现此问题。我没有更改任何网站文件。

有任何想法吗?

答案1

添加此内容:

Options -Multiviews

它们通常与 mod_rewrite 结合使用效果不佳

顺便说一句:如果这就是你目前所做的一切,使用新的FallbackResource可能会更有效率。(版本 >= 2.2.16)。

相关内容