如何使用具有非www重定向的rewriterule删除子目录

时间:2015-06-09 06:11:44

标签: regex apache .htaccess mod-rewrite redirect

所以我一直在摆弄.htaccess,我能够删除一个子目录并拥有非www子方向。请在下面找到代码:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*) http://domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(.*)subdir
RewriteRule ^(.*)$ subdir/$1 [L]

这可以重定向:

  

www.domain.com/subdir/file

  

www.domain.com/file

  

domain.com/file

但是,它无法重定向

  

domain.com/subdir/file

  

domain.com/file

这是我对此代码的唯一问题。有人可以告诉我,我做错了什么?任何帮助深表感谢。 :)

1 个答案:

答案 0 :(得分:1)

您可以在条件中使用OR条件:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{THE_REQUEST} /subdir/ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(?:subdir/)?(.*)$ http://%1/$1 [NC,R=302,L]