如何从根文件夹重定向到子文件夹,然后屏蔽该文件夹?
所以而不是http://root.com/sub_folder
我努力了:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^root\.com$
RewriteRule (.*) http://root.com/$1 [R=301,L]
RewriteRule ^$ /sub [L]
但是,这是行不通的。欢迎任何帮助。
如何从根文件夹重定向到子文件夹,然后屏蔽该文件夹?
所以而不是http://root.com/sub_folder
我努力了:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^root\.com$
RewriteRule (.*) http://root.com/$1 [R=301,L]
RewriteRule ^$ /sub [L]
但是,这是行不通的。欢迎任何帮助。
为了澄清我认为你在寻找什么:
您希望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 或更高版本中可用,因此如果您使用的是旧版本,则需要做一些更棘手的事情。