使用htaccess将某些帖子的URL重定向到子域名

时间:2013-12-10 15:05:03

标签: .htaccess redirect

我正在将博客移到子域重新开始,因此我需要指向旧帖子的链接以从name.com重定向到v1.name.com。但是,name.com上会有新的帖子需要忽略。我已经更改了新博客安装的URL结构,所以我只能说只有一个月和一年的网址需要重定向,但是我无法让它工作,我发现的所有示例都在考虑改变URL的结尾,而不是中间。我下面拼凑的是什么?

(有没有办法在不改变新博客上的URL结构的情况下实现这一点?我想要/ 2013/12之前的所有帖子/重定向,但我不知道有任何方法来指定它。)

RewriteEngine on
RewriteRule ^name.com/([0-9]{4}/[0-9]{2})/(.*)$  v1.name.com/$1/$2 [NC, R=301]

1 个答案:

答案 0 :(得分:0)

好的,您需要将主机名匹配移到单独的条件中,并在替换前添加http://位:

RewriteEngine on
RewriteCond %{HTTP_HOST} name.com
RewriteRule ^([0-9]{4}/[0-9]{2})/(.*)$  http://v1.name.com/$1/$2 [NC, R=301]

对于奖励积分,你说你想在2013/12之前匹配任何东西 - 如果我正确地解释这意味着你想要2013年包括12月在内的所有帖子,你可以这样做:

RewriteEngine on
RewriteCond %{HTTP_HOST} name.com
RewriteCond %{REQUEST_URI} ^/(1[0-9]{3}|200[0-9]|201[0-3]) 
RewriteRule ^([0-9]{4}/[0-9]{2})/(.*)$  http://v1.name.com/$1/$2 [NC, R=301]

如果你想在2013年排除12月:

RewriteEngine on
RewriteCond %{HTTP_HOST} name.com
RewriteCond %{REQUEST_URI} ^/(1[0-9]{3}|200[0-9]|201[0-3]) 
RewriteCond %{REQUEST_URI} !/2013/12 
RewriteRule ^([0-9]{4}/[0-9]{2})/(.*)$  http://v1.name.com/$1/$2 [NC, R=301]