2013-09-27 55 views
2

我将www.domain.com上的主站点和blog.domain.com上的旧wordpress博客合并为一个全新的WordPress的安装。我导出并导入了所有旧博客文章,以便他们现在生活在wwww.domain.com/blog//尝试将blog.domain.com重定向到www.domain.com/blog/

我试图创建一个将所有旧博客帖子映射到其新URL的重写规则。

我试过的变化对这些所谓的讨论: DNS/.htaccess files to redirect subdomain to specific folder Apache rewrite rule different if capture is empty

,但没有什么工作。

在我的.htaccess中会重定向到blog.domain.com www.domain.com/blog,如果在URL罢了:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^/?$ http://www.domain.com/blog/$1 [R=301,L] 

,但如果有什么更该URL,它根本不重写URL,并转到新的Wordpress网站的404页面。

我尝试添加一个捕获到最后重写规则线,但随后没有发生重写,它只是进入到新的主页,但地址栏仍显示为“blog.domain.com”:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^/(.+)$ http://www.domain.com/blog/$1 [R=301,L] 

有没有办法做我想做的事情?

回答

2

你要删除的斜线:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www\.blog\.domain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/blog/$1 [R=301,L] 
# no slash---^ 

,使+一个*。通过htaccess文件中的规则发送的URI具有前导斜杠,因此^/(.+)$永远不会匹配。

+0

哇。 2个正确的答案在同一时间。在我看到这些答案之前,我实际上做了最后一次搜索并找到了类似Jon Lin右边的解决方案。如果可以的话,我会接受他们。 –

2

替换您的规则是:

RewriteCond %{HTTP_HOST} ^(www\.)?blog\.domain\.com$ [NC] 
RewriteRule^http://www.domain.com/blog%{REQUEST_URI} [R=301,L] 

PS:确保这是你的.htaccess的第一个规则。

相关问题