创建301重定向多个URL地址相同的服务器?

时间:2014-11-25 13:35:32

标签: php .htaccess mod-rewrite redirect seo

让我们以下面的图像为例。问题是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

有什么想法吗?

enter image description here

1 个答案:

答案 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();
}