2017-09-05 89 views
1

我有两个域名指向同一台服务器,并被名称服务器接受。我的主机称这是一个域别名。一个较老的WordPress博客olddomain.com托管了一个博客,而一个较新的域名newdomain.com现在托管了一个经过更新的博客和一个投资组合网站。重定向旧的主页流量,但通过博客文章:WordPress&htaccess

我的客户想要捕捉他的旧博客流量并允许这些流量通过。这一切都工作正常,因为域别名。换句话说,没有我做任何事情到.htaccess文件,该内部重定向已经发生的情况:

http://olddomain.com/year/month/day/post-slug/已重定向到: http://newdomain.com/year/month/day/post-slug/

的问题是,我们还需要将olddomain.com网页流量重定向到新博客的着陆页。旧网站的主页是博客,但新网站的主页是个人投资组合。因此,我需要的htaccess做的是:

  • 由域名服务器保留当前域名通过如上所述,并提出可能和我的主机域别名设置
  • 接招的目的是为任何流量旧的主页,并重定向到新博客的着陆页,它看起来像这样:

olddomain.com(nothing else here)需要重定向到newdomain.com/blog/(nothing else here)

的问题,我有是,任何解决方案,我用自己的博客文章本身的重定向进行上述重定向混乱。我不能完全达到我可以同时拥有两个角色的地步。 htaccess还需要保留为index.php文件重写的标准WordPress块。

这是我目前所做的,它将olddomain.com重写为newdomain.com/blog/,但会将所有其他旧流量发送回主页,而不是允许内部域别名重定向发生。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} (www.)?olddomain.com [NC] 
RewriteRule ^(.*)$ http://newdomain.com/blog/ [R=302,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

谢谢。

回答

1

你可以用这些规则替换现有的代码:来自新的浏览器或清除浏览器缓存后

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

# redirect only landing page to new site's /blog/ URI 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[?\s] 
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC] 
RewriteRule ^/?$ http://newdomain.com/blog/ [R=307,NE,L] 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

</IfModule> 

测试它。

+0

关闭,让我得到我想要的基准级重定向。但是现在请求了一些像'/ year/month/day/post-slug /'一样的旧博客文章,因为REQUEST_URI也会重定向到'/ blog /'。 –

+0

我很犹豫说它已经工作了,因为我之前看到它假冒我(浏览器/ DNS缓存)。我今天会继续检查,但看起来很有希望。非常感谢你。一旦我可以验证,我会投票。 –

+1

非常好,非常感谢。由多人验证,它按照我的意图工作。 –

相关问题