我有这个
RewriteRule ^(.*) public/$1 [NC,L]
在我的 .htacces 文件中,我得到内部服务器错误 500 有人可以帮助我吗?
并解释为什么我得到它。
我有这个
RewriteRule ^(.*) public/$1 [NC,L]
在我的 .htacces 文件中,我得到内部服务器错误 500 有人可以帮助我吗?
并解释为什么我得到它。
因为您编写规则的方式是创建无限的重写循环,Apache 必须在某个时候中断,因此出现 500 内部服务器错误。如果您检查错误日志,您将看到确切的错误消息。
该[L]
标志不一定意味着“重写完成” - 它只是意味着“在此迭代中完成重写 - 让我们从头开始”。
阅读非常有用: RewriteRule Last [L] 标志不起作用?
要解决您的问题- 您需要添加一些条件,以便已经重写的规则不会一次又一次地重写。这些规则应该为您完成工作(可能的解决方案之一 - 这完全取决于您的实际项目的设置方式):
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]
使用此规则,如果 URL 已经被重写或/public/
立即开始,则不会发生额外的重写。