2011-03-24 84 views
2

我在重写网站的URL时遇到了一些问题。URL重写(Apache)隐藏文件夹

的文件夹结构我基本上是

public_html 
-farms 
    -public 
    -functions 

所以basicly我要的是把像URL:

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 

我已经放在上面的代码在农场夹.htaccess文件,但是我只是得到一个404试图访问任何文件。任何帮助?

回答

0

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

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

RewriteEngine on 
RewriteBase /home/yourdirectory/public_html 

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

仔细检查这是否适用于您的情况,如果没有,从你的Apache发布错误日志,所以我可以帮助解决问题,如果您想。

+0

感谢您的帮助,但我仍然得到404:[Thu Mar 24 18:17:05 2011] [error] [client :: 1] script'/Applications/MAMP/htdocs/farms/login.php'not发现或无法统计--- Rewritebase是:/ Applications/MAMP/htdocs(htdocs包含farms文件夹) – AzaraT 2011-03-24 18:17:59