htaccess重定向和掩码

时间:2013-02-13 22:24:01

标签: .htaccess mod-rewrite

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

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

然而,这不起作用。欢迎任何帮助。

1 个答案:

答案 0 :(得分: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或更高版本中可用,因此如果您使用的是旧版本,则需要进行更复杂的操作。