换链神器

SEO分享:彻底禁止搜索引擎收录非首选域名的方法

2014/9/29 13:55:54 标签: 176 个评论 6373 次浏览

众所周知绝大多数网站都会有一个首选域名,从用户体验考虑,通常站长们还会另外解析一个域名,并设置301重定向。例如,用户未输入www的时候,仍然可以访问到我们的网站,就像访问http://baidu.com,会自动跳到http://www.baidu.com一样。

理论上,301重定向是对搜索引擎友好的设置,而且搜索引擎也能识别301返回码,从而只收录首选域名。但也有个例!比如,张戈博客刚一上线,我就已经把www的域名301重定向到了不带www域名:

但百度依然收录带www的,且www的排名更加靠前:

site了下带www的域名,居然收录了1600多条:

又比如百度搜索“卢松松”的结果,也是www的排在第一

这个问题困扰了我很久,前往百度站长平台多次投诉无果,终于忍无可忍,决定将带www的域名做了禁止收录处理,我已做好www域名全线被T的心里准备。

曾多次搜索过如何禁止搜索引擎收录带www或不带www的域名的方法,但是都是一些做301设置的方法,看来还不够彻底!下面,我就来分享一下彻底禁止搜索引擎收录非首选域名的方法:

提前说明:如果正好和张戈博客相反,你的首选域名是带www的,那下面的代码只需要依葫芦画瓢的修改下即可,我就不赘述了。

一、准备工作

在网站根目录新建wrobots.txt文件,粘贴如下内容:

User-Agent: *

Disallow: /

二、修改规则

①、Nginx平台

编辑网站对应的nginx配置文件,比如:

vim /usr/local/nginx/conf/vhost/zhangge.net.conf

找到之前301跳转的配置,如:

server {

       server_name www.zhangge.net;

       return 301 $scheme://zhangge.net$request_uri;

}

修改为:

server

         {

                server_name www.zhangge.net;

                root  /home/wwwroot/zhangge.net;

                location / {

                        rewrite (.*) http://zhangge.net$1 permanent;

                        }

 

               location ~ (robots.txt) {

                        rewrite /robots.txt /wrobots.txt last;

                        }

}

执行如下命令,重载nginx即可生效:

/usr/local/nginx/sbin/nginx -s reload

②、Apache平台

编辑 .htaccess 文件,将之前的301跳转规则替换成如下代码即可:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.zhangge.net [NC]

RewriteRule ^robots.txt wrobots.txt [L]

RewriteCond %{REQUEST_FILENAME} !robots.txt

RewriteRule ^(.*) http://zhangge.net/$1 [R=301,L]

其中第4行是关键,表示仅在请求名称非robots.txt的时候,才会执行后面的301跳转,从而避免第三条规则被覆盖!

③、实例:万网虚拟主机

用朋友的万网虚拟主机实际测试发现,万网的控制面板已经存在301设置了,所以htaccess也要做相应修改才行。

在已有的.htaccess文件的最前面加上如下三行代码即可:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zhangge.net [NC]
RewriteRule ^robots.txt wrobots.txt [L]

修改后的完整的htaccess的内容如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zhangge.net [NC]
RewriteRule ^robots.txt wrobots.txt [L]
#以下为已存在规则:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule . /index.php [L]
</IfModule>

其他虚拟主机、建站程序,可以参考这个实例来修改即可,注意避免和主机已有的301发生规则冲突即可。

三、效果测试

①、手动测试

分别访问 http://www.zhangge.net/robots.txt  和 http://zhangge.net/robots.txt 可以发现已经是不同的内容了。

②、工具测试

如果还不放心,那么可以使用百度站长平台的robots工具来检测,效果如图所示:

测试http://www.zhangge.net/robots.txt:

测试http://zhangge.net/robots.txt:

从图中的检测结果可知,带www域名的robots理论上已禁止所有搜索引擎的抓取!

四、他山之石

最新补充:今天在逛博客的时候,在李明博客发现了一个更简单的方法,我稍微修改了下:

只要在网站的head部分加入如下代码即可:

<?php
if($_SERVER['HTTP_HOST'] == 'http://禁止收录域名1')
if($_SERVER['HTTP_HOST'] == 'http://禁止收录域名2')
{
?>
<meta name="robots" content="noindex,nofollow" />
<?php } ?>

比如,如果我要禁止搜索引擎收录带www的域名,那么代码如下:

<?php if($_SERVER['HTTP_HOST'] == 'www.zhangge.net') { ?>
<meta name="robots" content="noindex,nofollow" />
<?php } ?>

当访问被禁止收录的www.zhangge.net时,head里面会输出一段禁止搜索引擎索引和跟踪链接的meta标签:

而访问首选域名zhangge.net的时候,则不会输出这个META标记:

异曲同工的实现了和前文相同的功能!额外补充一下相关meta robots的说明,请自行选用:

<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW" />     可以抓取本页,而且可以顺着本页继续索引别的链接
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW" />   不许抓取本页,但是可以顺着本页抓取索引别的链接
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW" />   可以抓取本页,但是不许顺着本页抓取索引别的链接
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW" /> 不许抓取本页,也不许顺着本页抓取索引别的链接。

特别说明:用这个方法需要取消301重定向功能,否则不会有meta申明的输出!

所以,将robots和META这2种方法结合一下,新站架设前可以这样设置:

无须设置301重定向,先在nginx配置文件中,将监听www.zhangge.net(非首选域名)的配置修改如下:

server
        {
              listen 80;
              server_name www.zhangge.net;
              index index.html index.htm index.php default.html default.htm default.php;
              root  /home/wwwroot/zhangge.net;
              #以下是robots的重写规则
              location ~ (robots.txt) {
                         rewrite /robots.txt /wrobots.txt last;
                        }
               #以下其他需要的规则,和首选域名保持一致
               *******
        }

然后,在header.php里面新增如下代码:

<?php if($_SERVER['HTTP_HOST'] == 'www.zhangge.net') { ?>
<meta name="robots" content="noindex,nofollow" />
<?php } ?>

如此,就双管齐下的做好了禁止搜索引擎收录新站非首选域名的设置!

以上就是禁止搜索引擎收录非首要域名的全部教程了,希望对和我一样苦恼的站长有所帮助。由于,这种中途设置禁止收录非常罕见,张戈也只是做下测试,还不知道有什么结果,所以不建议老站轻易尝试!个人强烈建议新站在上线之前就做好这些设置,避免带来和我一样的困扰!另外,由于没有IIS环境,所以就没有研究测试IIS下的设置方法,感兴趣的站长可以参考文章的思路去研究测试下。

文章出处:张戈博客

原文地址:http://zhangge.net/4460.html



本文由换链神器(www.huanlj.com)原创或整理发布,如需要转载请注明出处!
你看网此文章的心情是
  • 呵呵

    5 人

  • 震惊

    7 人

  • 18 人

  • 鄙视

    1 人

  • 流泪

    3 人

发布评论
(用户名必填)
(邮箱)
(网站)
发布评论请勿带广告,发现将被删除并扣除双倍积分。谢谢合作!
最新评论
第 1 楼

为了让百度删除已索引的www域名,已进一步将所有www链接设置为404状态,所以本文中的www的robots访问也是404,无法预览效果,抱歉~

第 2 楼
2014/9/29 boyjian 回复

为嘛要禁止呢

主要是www和不带www的重复收录了,影响权重。

第 3 楼
2014/9/29 staredge 回复

等比例缩放代码

第 4 楼

百度对301的解析时间是很慢的,有时候一年多可能还不生效,并不是301对百度无效。

确实是不敏感,其实这个禁止工作可以在一开始建站就做好。后面就不会存在这种情况了。

第 5 楼
2014/9/29 Jade 回复

学习了,感觉好复杂的样子啊

第 6 楼

301后作跳转了域名更新为标题为新域名的域名

第 7 楼
2014/9/29 seoer007 回复

有点复杂

第 8 楼

学习了,感觉好复杂的样子啊

第 9 楼
2014/9/29 zone0007 回复

对带不带www这个的认识不用太纠结,

第 10 楼
2014/9/29 xqbaowen 回复

学习一下

第 11 楼
2014/9/29 kevindgx 回复

挺方便的

第 12 楼
2014/9/30 alan19 回复

顶了

第 13 楼
2014/10/1 alan19 回复

高清无码

第 14 楼
2014/10/2 xs109107 回复

WWW点88888av点com 有你想要的

第 15 楼
2014/10/5 3227394 回复

的风格的风格的风格

第 16 楼
2014/10/5 sdtzka 回复

学习了,谢谢

第 17 楼
2014/10/6 rhmark 回复

恩,找了很久

第 18 楼
2014/10/6 alan19 回复

挣点积分

第 19 楼
2014/10/7 mark4231 回复

我们设置的都是收录带www的,没什么区别吧?

第 20 楼

很多都以不带WWW为首选域啊

Copyright 2014 - 2018.换链神器&版权所有 湘公网安备 43060202000403号湘ICP备12009221号-7