我想在浏览器中输入以下网址:
localhost/mydomain/about.php
让apache重定向到实际的文件位置:
localhost/mydomain/public_html/about.php
我写了以下.htaccess文件:
RewriteEngine On
RewriteRule ^(.+)$ public_html/$1
我对Apache完全不熟悉,而且我对reg表达式的理解非常基础 - 但我认为这意味着“在域名之后选择任何路径并在其前面粘贴public_html /”。但结果是500内部服务器错误。
我错过了什么?
答案 0 :(得分:1)
这是因为仅指定^(.+)$
规则会使重写保持无限循环。
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错误日志。