<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
我在Windows 7上使用wamp apache。在httpd.conf中启用了mod_rewrite.so。此代码直接取自此处的教程:http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/
它的目的是将调用重定向到实际逻辑所在的./public文件夹。
当我尝试浏览此.htaccess文件目录中的index.php时,我收到内部服务器错误(http 500)。当我删除两个rewriterule语句时,它可以工作。
不确定原因,但日志文件夹中没有显示错误。没有任何错误日志。
有关这里出了什么问题的任何线索?
答案 0 :(得分:2)
您的表达式(.*)
与目标/public/something
匹配。重写引擎循环,直到请求URI停止变化,并且您的请求URI变为/public/public/public/public/public
等,因为没有任何东西可以阻止重写过程。尝试添加条件以防止循环:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule (.*) public/$1 [L]
</IfModule>
因此,如果请求已经以/public
开头,请不要应用该规则。