重定向所有子目录,但不重定向父目录

时间:2013-11-22 17:55:06

标签: regex wordpress apache .htaccess mod-rewrite

我想在子目录后重定向所有文件夹:

example.com/sub/sub2/some-place
example.com/sub/sub3/some-place
example.com/sub/subY/some-place

到子域:

sub.example.com/sub2/some-place
sub.example.com/sub3/some-place
sub.example.com/subY/some-place

这是我正在使用的规则并且有效:

RewriteRule ^sub/(.*)$ http://sub.example.com/$1 [R=302,L]

但是,我不希望重定向example.com/sub/目录。

用户访问example.com/sub/应该留在/ sub / 用户访问example.com/sub/ANYTHINGELSE应重定向到sub.example.com/ANYTHGINELSE

提前致谢。

编辑:问题:如何在规则中添加排除项?示例:我想要

example.com/sub/sub2/some-place 
example.com/sub/sub3/some-place 
example.com/sub/subY/some-place 

如上所述重定向但

example.com/sub/thispageshouldnotredirect 

不重定向。我尝试添加此规则:

RewriteCond %{REQUEST_URI} !^/thispageshouldnotredirect 
编辑#2:目前这对我有用:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/sub/thispageshouldnotredirect/?$
RewriteRule ^sub/(.+)$ http://sub.example.com/$1 [R=302,L]

1 个答案:

答案 0 :(得分:2)

使用.+代替.*,以确保在/sub/之后还有1个字符:

RewriteRule ^sub/(.+)$ http://sub.example.com/$1 [R=302,L]