虽然重写规则匹配,但返回404

时间:2014-02-11 09:45:58

标签: php apache .htaccess mod-rewrite url-rewriting

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

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

除非请求路径以index/开头,否则结果为404 Not Found

如果我将index.php的文件名更改为index2.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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如@wrikken在Serverfault中所建议的,我添加了这个:

Options -Multiviews

they usually don't play very nice in combination with mod_rewrite