顶级域名做301重定向到www二级域名

桂林seo半杯酒博客


一、为什么要做301重定向到www?

为什么要这么做?这样肯定是有利于SEO的,原因是经常会碰到这样的情况,其他网站链接你的站点时,会用下面的链接:

www.xxxx.com

xxxx.com

而这样导致:你站点主域名的pr值分散到其他几个URLs了。

如果你用301重定向把其他三个URL转到www.xxxx.com,PR也就集中在主域名:www.xxxx.com 了。

因此,当你的网站有多个域名绑在一个空间时,最好要做301重定向到主域名。

 

二、几种301方式:

下面全部讲解几种方式,分别适合不同用户,比如有服务器权限的用户,和虚拟主机用户。

(一)nginx修改:

方式1:把顶级域名单独配置如下:

server {

listen 80;

server_name xxxx.com;

return 301 http://www.xxxx.com$request_uri;

}

#在server上增加一段

server {

listen 80;

server_name www.xxxx.com;

...

}

方式2:(不推荐这样)并在一起配置:

server {

listen 80;

server_name www.xxxx.com xxxx.com; #放在一起配置

if ($http_host = xxxx.com) {

rewrite (.*) http://www.xxxx.com$1;

}

...

}

(二)Apache服务器,可修改.htaccess文件:

1, 修改httpd.conf文件,确保ReWrite模块开启,并在相应目录支持ReWrite功能:

#下面这一行的#号去掉

LoadModule rewrite_module modules/mod_rewrite.so

#网站目录下的Allowoverride设置

设置:AllowOverride all

<Directory "....">

...

AllowOverride all

2, 设置.htaccess文件(需要虚拟主机支持)

使访问 xxxx.com/的时候就会自动转到www.xxxx.com

在网站根目录的.htaccess文件里写上以下代码即可:

RewriteEngine on

RewriteCond %{http_host} ^xxxx.com [NC]

RewriteRule ^(.*)$ http://www.xxxx.com/$1 [L,R=301]

这段代码的意识就是通正则表达式,将直接访问顶级域名的请求,全部转向www二级域名。

注意:URL标准化的301重定向(以上代码)需要写在其他URL-rewrite代码之前。

(三)PHP方法:

在代码最开始的地方加入:

//301跳转

$sourceDomain = 'xxxx.com' ; //顶级域名

$targetDomain = 'http://www.'.$sourceDomain; //要重定向到这个网址,必须以301开头。

if($_SERVER['HTTP_HOST']==$sourceDomain) {

if(!empty($_SERVER["REQUEST_URI"])) $uri301 = strip_tags($_SERVER["REQUEST_URI"]); #/index.php?m=member&c=message&msgtype=1?

else $uri301 = strip_tags($_SERVER["PHP_SELF"]) . ( !empty($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"] : ''); #/index.php?

#if($uri301=="/index.php" || $uri301 =='/' ) $uri301="";//首页清空

$redirect301Url = $targetDomain.$uri301;

header('HTTP/1.1 301 Moved Permanently');//发出301头部

header('Location:'.$redirect301Url);//跳转到带www的网址

exit;

}