.htaccess和非常简单的配置导致太多重定向

时间:2019-01-25 10:18:01

标签: .htaccess

大家好。 我在网站上做一个简单的仪表板,我已经设置了一个非常简单的htaccess来处理一些URL:

RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

#routing:
RewriteRule ^login/?$ login.php [L]
RewriteRule ^page/([0-9]+)/?$ /index.php?page=$1 [QSA,NC,L]

#errors:
ErrorDocument 404 /404.php 

据我所知,这应该很简单,但是:

/ page / 1234 URL正常运行(以及使用的其他任何数字,因此该模式有效)。

进入www.example.com/login或www.example.com/login/导致:

1)如果“ errorDocument”行位于所有内容的顶部,则太多的重定向错误 2)如果“ errorDocument”位于htaccess的底部,则/404.php重定向。

同时,我可以直接访问/login.php。

我已经进行了一些测试,但是我可以找出问题所在,并且还使用this tool测试了文件:

1 个答案:

答案 0 :(得分:2)

将我的评论转换为答案。

好像您打开了MultiViews选项并得到了这种意外行为。

Options -MultiViews

选项MultiViews(请参阅http://httpd.apache.org/docs/2.4/content-negotiation.html)由Apache's content negotiation module使用,该选项运行之前 mod_rewrite,并使Apache服务器匹配文件扩展名。因此,如果/file是URL,那么Apache将尝试解析它并提供/file.php