让我们以下面的图像为例。问题是3个url地址指向同一个服务器,我需要从一个到另一个创建一个301 redirect
,主要是出于SEO的原因。但我无法在htaccess中执行此操作,因为它为其中一个域创建了一个无限循环,
我也尝试这样的东西::
if ($do_redirect !== '' && trim($do_redirect,'/') !== trim($userrequest,'/')) {
if (strpos($do_redirect,'/') === 0){
$do_redirect = home_url().$do_redirect;
}
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $do_redirect);
exit();
}
但理论上这应该有效,但当我用curl -I domain.com
检查这样的域时,我得到了:
HTTP / 1.1 200 OK
日期:星期二,2014年11月25日13:33:49 GMT
而不是:
HTTP / 1.1 301永久移动
日期:星期二,2014年11月25日13:33:04 GMT
有什么想法吗?
答案 0 :(得分:1)
最好的解决方案是在Apache端执行此操作。
<VirtualHost *:80>
ServerName sample.org
Redirect 301 / http://www.newdomain.com/
</VirtualHost>
Apache会以这种方式减少开销。如果你不能这样做,PHP解决方案看起来像
if($_SERVER['HTTP_HOST'] == 'sample.org') {
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: http://www.newdomain.com/');
exit();
}