分享、学习、提高
2011/08/31 11:16
文章作者:Enjoy 转载请注明原文链接。
一个网站,用户访问到的其实可能有两个版本,一个是带www的,一个是不带www的。如:www.itlearner.com和itlearner.com。内页同样如此。

一般来说,经常见到的应该是带www的域名,但是有不少人在直接输网址的时候喜欢省略掉www,而不带www和带www的域名原则上说是不同的,因此有些站(甚至有些是小有名气的站)都没有注意到这点,解析了www,没解析没带www的,导致访问不带www域名时失败。

因此,带www和不带www的都要做解析。但是两个都解析后,产生一个问题,搜索引擎认为这是两个站点。

比较好的处理方式是不带www的域名301到带www的域名下。下面提供两种方案,一种新建一个根域名的主机配置,专门用来跳转,第二种是直接在www域名的主机配置文件中设定。

第一种方案:

Nginx下的规则:

server {
        listen 80;
        server_name itlearner.com;
        rewrite ^/(.*)$ http://www.itlearner.com/$1 permanent;
}

Apache下的规则:

RewriteEngine On
RewriteRule ^(.*)$         http://www.itlearner.com/$1 [R=301]

第二种方案:

Nginx下的规则:
server {
        listen 80;
        server_name www.itlearner.com itlearner.com;
        if ($host != 'www.itlearner.com' ) {
        rewrite ^/(.*)$ http://www.itlearner.com/$1 permanent;
        }
}

Apache下的规则:

RewriteEngine On
RewriteCond %{HTTP_HOST}   ^www\.itlearner\.com$ [NC]
RewriteRule ^(.*)$         http://www.itlearner.com/$1 [L,R=301]


第一种方案略嫌麻烦,因为需要新建一个主机,一般直接使用第二种方案。但如果www下的rewrite比较多,访问量又非常大,这时,就建议采用第一种方案了。

谷歌都这点处理的比较好,如果网站主要来路是Google,这一点都可以不用做,因为使用网站管理员工具,可以设定首选域(位置在 网站配置->设置)。但是我仍然建议这么做,因为这样可以帮助其它搜索引擎和访问者了解到您网站的首选域。

百度在这个问题上的处理还是有点问题的,比较喜欢收录不带www的域名(即使不带www的域名一直以来都是301到带www的域名上),造成一个网站有两个首页。
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写