将root和所有不以特定目录开头的请求重定向到另一个目录

时间:2015-12-22 15:48:58

标签: apache .htaccess

我需要写一个.htaccess,所以我最终

  • 将所有请求重定向至//2015
  • 将所有请求留给/2015
  • 将所有不以/2015开头的请求重定向到/2014
  • 从逻辑上讲,将所有请求留给/2014

我的微弱尝试最终都是这样,但显然不起作用......

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/$ [OR]
RewriteCond %{REQUEST_URI} !^/2015 [AND]
RewriteCond %{REQUEST_URI} !^/2014
RedirectMatch 301 /(.*) /2014/$1

# RewriteCond %{HTTP_HOST} ^(www.)?loc.domain$
# RewriteRule ^(/)?$ 2015 [L]
RewriteRule ^$ /2015 [L]

修改 我可能不够透彻。我需要人们试图访问 /anything也被重定向到/2014/anything,不会被重定向到/2014

的根目录

2 个答案:

答案 0 :(得分:2)

我认为你需要这样做。

RewriteRule ^/?$ /2015 [R=301,L]
RewriteRule ^((?!2014|2015).+) /2014/$1 [R=301,L]

您还需要在规则中排除2015和2014,否则它将以重定向循环结束。

BTW出于学习目的,您将mod_alias与mod_rewrite混合使用。您无法使用RewriteCondRedirectMatch一起使用RewriteRule

答案 1 :(得分:0)

您可以使用

RewriteEngine On

RewriteRule ^/?$ /2015 [L,R]

RewriteRule !^2015 /2014 [L,R]