0

如何从根文件夹重定向到子文件夹,然后屏蔽该文件夹?

所以而不是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]

但是,这是行不通的。欢迎任何帮助。

4

1 回答 1

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]

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

编辑:根据 Jon Lin 在下面的评论,该[L]标志仅停止当前轮次处理,并且内部重写再次通过规则发送(我总是伪造那部分)。因此,您可以改为终止第二行[END],这将停止所有重写处理。问题是它[END]仅在 Apache 2.4 或更高版本中可用,因此如果您使用的是旧版本,则需要做一些更棘手的事情。

于 2013-02-14T03:51:41.257 回答