.htaccess RewriteRule服务器错误500

时间:2011-08-19 08:12:08

标签: .htaccess internal-server-error

我有这个

RewriteRule ^(.*) public/$1    [NC,L]

在我的.htaccess文件中,我得到内部服务器错误500 有人能帮助我吗?

并解释我为什么得到它。

1 个答案:

答案 0 :(得分:1)

因为您编写规则的方式是他们创建无限重写循环,Apache必须在某些时候中断,因此500内部服务器错误。如果您检查错误日志,您将看到确切的错误消息。

[L]标志不一定意味着“重写完成” - 它只是意味着“在此迭代中完成重写 - 让我们从开始再次”。

阅读非常有用: RewriteRule Last [L] flag not working?

要解决您的问题 - 您需要添加一些条件,以便不会一次又一次地重写已重写的规则。这些规则应该为您完成工作(可能的解决方案之一 - 这一切都取决于您的实际项目的设置方式):

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

使用此规则,如果URL已经被重写或立即以/public/开头,则不会再进行其他重写。