所以我正在一个杂志网站上工作,我想要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 latest或lastest/然后去/latest.php
顺便说一下,我会build议添加非大小写敏感= NC和查询string附加QSA到您的rewriterule,这将结束如下所示:
RewriteRule ^latest(/|)$ /latest.php [QSA,NC,L]
也许这个规则是一样的,我没有testing:
RewriteRule ^latest/?$ /latest.php [QSA,NC,L]