此:
rewriteengine on
rewriterule test /index.php
.works。这样:
rewriteengine on
rewriterule test index.php
.works。这样:
rewriteengine on
rewriterule index.php index.php
.works。
但是这个:
rewriteengine on
rewriterule index.php /index.php
。给我500个内部服务器错误。
index.php index.php
如何运作,但index.php /index.php
没有?
造成此错误的原因是什么?
答案 0 :(得分:1)
因为您要求为什么,我会分享一些见解。
对于此rewriterule index.php index.php
指令,Apache认识到原点和目标是相同的initial URL equal rewritten URL
,因此[IGNORING REWRITE]
第二个不是100%相同,所以Apache尝试执行它。但是因为斜杠没有产生任何差异,我们将index.php重写为/index.php,并且在每次重写之后,Apache再次检查新目标的所有重写指令,现在我们最终进入无限重写循环。
只需在配置中设置日志级别LogLevel alert rewrite:trace3
,您就可以自己查看。