我有两个域名指向同一台服务器并被名称服务器接受。我的主机将其称为域别名。较旧的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>
感谢。
答案 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>
从新浏览器或清除浏览器缓存后对其进行测试。