也许你在百度site:www.camnpr.com 和 site:camnpr.com 你会发现收录时间不一样,权重也不一样等,这是因为,严格的说,www.camnpr.com 是二级域名,不带www的才是主域名。避忌权重分散,力求权重集中是网站undefinedSEO优化的一个重要内容,今天要谈的是带www与不带www的域名权重问题,我们的目标是不管用什么方法,力求做到带www与不带www的域名权重集中到其中一个上来。
带www与不带www的域名,在域名解析和网站管理上都可以是独立的,但是除非特别的原因,否则绝大多数网站带www与不带www的域名都是指向同一个站点,网站内容是不分开的,然而尽管如此,搜索引擎仍然会认为带www与不带www的域名是代表两个不同的网站,在收录和权重分配上仍然是分开的。这就是所谓的“权重分散”,对于网站SEO优化来说,是一个需要特别重视的部分。本文将要介绍几种方法,避免带www与不带www域名的权重分散。
1、全站页面使用301永久重定向
如果你的网站所有页面不是html的静态页面,使用的是PHP、asp或asp.net的程序,那么要实现带www与不带www域名通过301永久重定向到其中一个上来是件很容易的事情。我们只需在每个页面开头添加几行代码即可。
PHP代码:
<?php
$the_host = $_SERVER['HTTP_HOST'];//取得当前域名
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断地址后面是否有参数
if($the_host == 'camnpr.com')//把这里的域名换上你想要的
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: http://www.camnpr.com'.$request_uri);//跳转到你希望的地址格式
}
?>
ASP代码:
<%
currentdomain= request.ServerVariables("SERVER_NAME") '获取地址栏中当前的域名。
currenturl=request.ServerVariables("url") '获取地址栏中的域名后的ASP文件名。
currentrequest=request.ServerVariables("QUERY_STRING") '获取地址栏中?后面的参数
If currentdomain="camnpr.com" Then '只有当浏览的域名是camnpr.com的时候才做301跳转
moveurl="http://www.camnpr.com"¤turl '重新组合为http://camnpr.com/
If currentrequest<>"" Then
moveurl=moveurl&"?"¤trequest '因为还有参数,所以将参数也组合到新的跳转地址中去
End if
'跳转
Response.Status="301 Moved Permanently" '以下两句实现301永久性跳转
Response.AddHeader "Location",moveurl
End if
%>
上述代码可以实现全站301,但是需要每个页面都添加这些代码,有点麻烦,如果有更简单的方法来实现就更好了。
2、巧用IIS实现全站重定向
如果你使用的是IIS服务器,那么实现全站重定向将变得异常简单,你只需要动动鼠标,填上几个参数,不需要改程序,不需要编写什么规则代码。
如上图所示,在IIS里首先添加一个不带www域名的网站,然后把主目录设置下,选中“重定向到URL”及地址即可,后面的“$S$Q”是表示把参数一起重定向,不要去掉。
修改于:2014-8-19 18:10:36 上边说的作废!!!
前提:比如你的网站是:http://www.camnpr.com 如果你要重定向到域名: http://camnpr.com 那么,你需要先把之前的ip绑定只绑定一个:ip --- camnpr.com 不要再添加绑定www.camnpr.com了。
1. 完成了上边的前提, 那么,先新建一个目录:E:\wwwroot\camnprRedirect,该目录下随便建2个文件:default.html, 404.htm (文件内容随便写)。
然后,在IIS中创建一个新的站点,然后指定到上边创建的目录,配置它的IP,到:www.camnpr.com
最后,在该新建的站点上,右击属性》主目录》重定向到URL,输入:http://camnpr.com$S$Q 一定要选2个:“上面输入的准确 URL” 和 “资源的永久重定向”。确定保存。 这个就OK了。
3、在html里使用base标签 避免带与不带www域名的权重分散
在head之间添加上这段代码:
<base href="http://camnpr.com/" />
下面是关于base标记的介绍:
base标记是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
所以通过这个方法也可以实现避免带与不带www域名的权重分散,集中使用同一个域名。
不过这并不是301重定向。
IE7中注意:
1) 、<html>之前不能加入额外的输出字符。否则IE7就对 base 不进行解析。
2)、<base>是一个链接基准标记,用以改变文件中所有链接标记的参数默认值。它只能适应于文件的开头部分,即标记< head >与< /head >之间。
4、使用.htaccess实现301重定向
如果空间支持ReWrite URL重写,网站使用的是PHP程序,那么可以使用.htaccess实现301重定向。创建一个.htaccess文件,并将下面提供的代码写入文件内,它可以确保所有来自对domain.com的请求都转向到对www.domain.com 进行请求。记住.htaccess文件一定要放在旧网站的根目录下,并且新网站要和旧网站保持相同的目录结构及网页文件。
PHP代码实现用301将不带WWW的域名重定向:即将camnpr.com统一为www.camnpr.com
rewriteEngine on
rewriteCond %{http_host} ^camnpr.com[NC]
rewriteRule ^(.*)$ http://camnpr.com/$1 [R=301,L]
如何检测301重定向
可以在这里看看301重定向是否成功,在线测试地址,看header就行了。
小知识:
301与302的区别
官方说法301、302都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved)。
302 redirect: 302 代表暂时性转移(Temporarily Moved )。