我想在我的浏览器中键入以下url:
localhost/mydomain/about.php
并让apache重定向到实际的文件位置:
localhost/mydomain/public_html/about.php
我编写了以下.htaccess文件:
RewriteEngine On
RewriteRule ^(.+)$ public_html/$1
我对Apache完全不熟悉,我对reg表达式的理解非常基础--但我认为这意味着“在域名后面选择任何路径,并在其前面加上public_html/”。但是,结果是一个500内部服务器错误。
我遗漏了什么?
发布于 2011-11-05 10:47:15
这是因为仅指定^(.+)$
规则将使重写处于无限循环中。
about.php > public_html/about.php > public_html/public_html/about.php > ...
一个快速的解决方案是RewriteRule ^([^/]*)$ public/$1
。或者,您可能对重写规则的LAST
修饰符/标志感兴趣:
RewriteRule ^public/(.*)$ public/$1 [L]
RewriteRule ^(.*)$ public/$1
如果你想知道调试rewrite_module的方法,你可以在httpd.conf中设置LogLevel DEBUG
,然后你可以查看apache错误日志。
https://stackoverflow.com/questions/8017764
复制相似问题