Apache URL重写 - 隐藏/ public_html /在URL路径中

时间:2011-11-05 02:29:05

标签: apache url-rewriting

我想在浏览器中输入以下网址:

localhost/mydomain/about.php

让apache重定向到实际的文件位置:

localhost/mydomain/public_html/about.php

我写了以下.htaccess文件:

RewriteEngine On
RewriteRule ^(.+)$ public_html/$1

我对Apache完全不熟悉,而且我对reg表达式的理解非常基础 - 但我认为这意味着“在域名之后选择任何路径并在其前面粘贴public_html /”。但结果是500内部服务器错误。

我错过了什么?

1 个答案:

答案 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错误日志。