Htaccess重写规则奇怪的匹配

时间:2014-03-26 13:58:16

标签: regex apache .htaccess rewrite

我有以下重写规则:

ErrorDocument 404 /404.html

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^index\.php/(.*)$ /$1 [L,R=301]

我想重定向所有类型的网址:

http://www.domain.com/index.php/any-character-here

http://www.domain.com/any-character-here

我的问题是它还匹配以下网址:

http://www.domain.com/index/any-character-here

我已经评论了所有其他规则,以确保这是一个匹配,它确实。 知道为什么匹配第二种类型的URL吗?

由于

1 个答案:

答案 0 :(得分:1)

我怀疑您已启用MultiViews选项(内容协商)。在顶部使用此行禁用它:

Options -MultiViews
  • MultiViews使用选项Apache's content negotiation module,它在mod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php