重写/最新产生服务器错误

所以我正在一个杂志网站上工作,我想要URL /latest重写到文件latest.php 。 我正在cPanel托pipe服务器上工作,所以我把.htaccess放在/public_html目录中(重要的是第8行):

 RewriteEngine On RewriteRule ^archives/search/?$ /archives/search.php [L] RewriteRule ^archives/([\d]{4})-([\d]{1})/?$ /archives/download.php?year=$1&issue=$2 RewriteRule ^archives/([\d]{4})/?$ /archives/download.php?year=$1 RewriteRule ^archives - [L] RewriteRule ^admin - [L] RewriteRule ^search - [L] RewriteRule ^latest /latest.php [L] RewriteRule ^contact/?$ /contact.php [L] RewriteRule ^([az]+)/?$ /page.php?p=$1 [L] ErrorDocument 404 /notfound.php ErrorDocument 500 /dberror.php 

但是,导航到/latest ,我得到一个500 interal server error 。 我原本以为这是在.php文件中的一些问题,但是当我完全清空文件latest.php并且错误持续时,排除了这个问题。 有趣的是,当我改变/latest的任何其他和导航到,它的作品。 我不知道为什么。 我想给链接到整个网站,但它仍在发展,所以我不能。

您的重写规则可能对服务器是无意义的:

 RewriteRule ^latest /latest.php [L] 

意思是“如果有人想访问以” latest开头的内容,则转到” /latest.php “。

所以情况是:你尝试访问“ latest ”,它被redirect到“ /latest.php ”,然后“ /latest.php ”被redirect到“ /latest.php ”等等。 它进入无限redirect循环= 500 internal server error

这个规则可能更合适:

 RewriteRule ^latest(/|)$ /latest.php [L] 

这意味着:如果URL latestlastest/然后去/latest.php

顺便说一下,我会build议添加非大小写敏感= NC和查询string附加QSA到您的rewriterule,这将结束如下所示:

 RewriteRule ^latest(/|)$ /latest.php [QSA,NC,L] 

也许这个规则是一样的,我没有testing:

 RewriteRule ^latest/?$ /latest.php [QSA,NC,L]