URL重写(Apache)隐藏文件夹

时间:2011-03-24 17:57:19

标签: apache mod-rewrite url-rewriting

我在重写网站网址时遇到了一些问题。

我得到的文件夹结构基本上是

public_html
 -farms
   -public
   -functions

基本上我想要的是转换网址:

www.site.com/farms/public/pageInPublicFolder.php INTO www.site.com/farms/pageInPublicFolder.php

因此,如果我执行像site.com/farms/index.php之类的操作,它应该使用公共文件夹中的索引文件,但是会隐藏URL中公共文件夹内的事实。

通过查看网站上的其他主题,我发现了以下代码:

RewriteEngine On
RewriteRule ^/(.*)$   /public/$1

我已将上述代码放在farm文件夹中的.htaccess文件中,但是我只是试图访问任何文件。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

首先,无论何时在.htaccess中使用RewriteRule,匹配的字符串都不会以斜杠字符开头。所以,你的规则永远不会匹配。

之后,您需要确保不要继续以递归方式应用规则,因为规则都会在重写后再次运行(至少在每个目录的上下文中)。所以,你真正想要的是:

RewriteEngine on
RewriteBase /home/yourdirectory/public_html

RewriteCond %{REQUEST_FILENAME} !public
RewriteRule ^farms/(.*)$ public/$1 [L]

仔细检查这是否适用于您的方案,如果没有,请从您的Apache日志中发布您的错误,以便我可以帮助修复它,如果您愿意的话。