2013-02-13 84 views
0

我将如何从根文件夹重定向到一个子文件夹,然后掩盖该文件夹?htacces重定向和掩码

所以不是http://root.com/sub_folder

这将是刚刚http://root.com

我曾尝试:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^root\.com$ 
RewriteRule (.*) http://root.com/$1 [R=301,L] 
RewriteRule ^$ /sub [L] 

然而,这是行不通的。任何帮助将受到欢迎。

回答

0

为了澄清什么,我认为你正在寻找:

你想谁没有尾随路径进入http://root.com被悄悄改写成http://root.com/sub用户。

但是,如果用户直接输入http://root.com/sub,则需要将它们重定向到http://root.com

root.com中的任何其他路径应单独保留。

以下两条规则完成此操作。如果您有多个域,并且只希望将其应用于一个域,请在每个RewriteRule前添加原始RewriteCond。

RewriteRule ^sub/?$ http://root.com/ [R=301,L] 
RewriteRule ^$ /sub [END] 

第一条规则将带/不带斜杠的重定向/子重定向到root.com。第二条规则将基础域重写为/ sub。

编辑:根据Jon Jon的评论,如下,[L]标志只停止当前一轮处理,并且内部重写通过规则再次发送(我总是伪造那部分)。因此,您可以用[END]来终止第二行,而这会停止所有重写处理。值得注意的是,[END]仅适用于Apache 2.4或更高版本,因此如果您使用的是旧版本,则需要完成一些棘手的事情。

+0

这些规则将导致重定向循环。 – 2013-02-14 04:18:17

+0

如何?只有/ sub在第一条规则中被重定向。重定向后,用户加载不匹配/ base的基本URL,以避免第一条规则触发。第二条规则被重写,而不是重定向。 – 2013-02-14 04:35:53

+0

由于重写引擎循环直到URI停止更改,第二条规则将URI重写为'sub',引擎循环,并且它匹配第一条重定向浏览器的规则,然后该请求与第二条规则匹配,然后重写引擎循环和第一条规则得到匹配,重定向浏览器等。 – 2013-02-14 05:38:24