将具有子目录的所有URL重定向到root,除了两个

时间:2012-06-10 19:30:39

标签: php .htaccess exception redirect

我最近更改了其中一个网站的链接结构,需要301重定向:

所有带子目录的链接到没有子目录的版本(即只是使子目录消失)

e.g。

domain.com/fdfddffd/test -> domain.com/test
domain.com/yipeee/test -> domain.com/test
domain.com/fdfddffd/aaa -> domain.com/aaa etc.

所以我考虑过使用

RewriteRule  ^([^/]+)(.*)$     / [R]

但是我需要从中排除两个目录,一个是“搜索”,另一个是“数据”。如何将上述重写规则与排除组合?

1 个答案:

答案 0 :(得分:3)

使用RewriteCond将这两者排除在!^/(search|data)/

之类的表达式之后
# Unless the request matches /search/ or /data/
RewriteCond %{REQUEST_URI} !^/(search|data)/
# Rewrite to the contents of the second group (.*)
RewriteRule  ^([^/]+)/(.*)$  /$2 [L,R=301]