重定向旧的主页流量,但通过博客文章:WordPress& htaccess的

时间:2017-09-05 13:00:53

标签: wordpress apache .htaccess redirect

我有两个域名指向同一台服务器并被名称服务器接受。我的主机将其称为域别名。较旧的WordPress博客olddomain.com托管了一个博客,而较新的域名newdomain.com现在托管了一个经过改进的博客和一个投资组合网站。

我的客户希望捕获他的旧博客流量并允许其传递。由于域别名,一切正常。换句话说,如果没有我对.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 个答案:

答案 0 :(得分: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>

从新浏览器或清除浏览器缓存后对其进行测试。