我正在将博客移到子域重新开始,因此我需要指向旧帖子的链接以从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]
答案 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]