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

  • 时间:
  • 浏览:136
  • 来源:古韵博客 - 专注共享卢松博客资源

众所周知,绝大多数网站时会有原本首选域名,从用户体验考虑,通常站长们时会另外解析原本域名,并设置10001重定向。相似 ,用户未输入www的之前 ,仍然可不也能访问到让让我门 都 的网站,就像访问http://baidu.com,会自动跳到http://www.baidu.com一样。

理论上,10001重定向是对搜索引擎友好的设置,如可让搜索引擎也能识别10001返回码,从而只收录首选域名。但删剪时会个例!比如,张戈博客刚一上线,让你意味着把www的域名10001重定向到了不带www域名:

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

site了下带www的域名,真是 收录了110000多条:

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

事实说明,百度对10001很不敏感,你或多或少那此的现象困扰了我之前 ,前往百度站长平台多次投诉无果,终于忍无可忍,决定将带www的域名做了禁止收录外理,我已做好www域名全线被T的心里准备。

曾多次搜索过如可禁止搜索引擎收录带www或不带www的域名的最好的土法律法律依据,如可让删剪时会或多或少做10001设置的最好的土法律法律依据,看来还过高 彻底!下面,让你来分享一下彻底禁止搜索引擎收录非首选域名的最好的土法律法律依据:

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

一、准备工作

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

User-Agent: *
Disallow: /

二、修改规则

①、Nginx平台

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

vim /usr/local/nginx/conf/vhost/zhang.ge.conf

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

server {
       server_name www.zhang.ge;
       return 10001 $scheme://zhang.ge$request_uri;
}

修改为:

server
         {
                server_name www.zhang.ge;
                root  /home/wwwroot/zhang.ge;
                location / {
                        rewrite (.*) https://zhang.ge$1 permanent;
                        }

               location ~ (robots.txt) {
                        rewrite /robots.txt /wrobots.txt last;
                        }
}

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

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

②、Apache平台

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

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zhang.ge [NC]
RewriteRule ^robots.txt wrobots.txt [L]
RewriteCond %{REQUEST_FILENAME} !robots.txt
RewriteRule ^(.*) https://zhang.ge/$1 [R=10001,L]

其中第4行是关键,表示仅在请求名称非robots.txt的之前 ,才会执行里边的10001跳转,从而外理第三条规则被覆盖!

③、实例:万网虚拟主机

用让让我门 都 的万网虚拟主机实际测试发现,万网的控制面板意味着地处10001设置了,全都有htaccess也要做相应修改才行。

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

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

修改后的删剪的htaccess的内容如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.zhang.ge [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>

或多或少虚拟主机、建站任务管理器运行,可不也能参考你或多或少实例来修改即可,注意外理和主机已有的10001地处规则冲突即可。

三、效果测试

①、手动测试

分别访问 http://www.zhang.ge/robots.txt  和 https://zhang.ge/robots.txt 可不也能发现意味着是不同的内容了。

②、工具测试

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

测试http://www.zhang.ge/robots.txt:

测试https://zhang.ge/robots.txt:

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

2014/09/26补充:一大早就想看 来自百度站长的robots禁封通知,看来是有效果的,想看 啥之前 把www的收录K掉:

四、他山之石

最新补充:今天在逛博客的之前 ,在李明博客发现了原本更简单的最好的土法律法律依据,我稍微修改了下:

倘若在网站的head要素加入如下代码即可:

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

比如,意味着让你禁止搜索引擎收录带www的张戈博客,那么代码如下:

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

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

而访问首选域名zhang.ge的之前 ,则不用输出你或多或少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" /> 不许抓取本页,而是我

许顺着本页抓取索引别的链接。

有点硬说明:用你或多或少最好的土法律法律依据都要撤出 10001重定向功能,如可让不用有meta申明的输出!

全都有,将robots和META这2种最好的土法律法律依据结合一下,新站架设前可不也能原本设置:

何必 设置10001重定向,先在nginx配置文件中,将监听www.zhang.ge(非首选域名)的配置修改如下:

server
        {
              listen 1000;
              server_name www.zhang.ge;
              index index.html index.htm index.php default.html default.htm default.php;
              root  /home/wwwroot/zhang.ge;
              #以下是robots的重写规则
              location ~ (robots.txt) {
                         rewrite /robots.txt /wrobots.txt last;
                        }
               #以下或多或少都要的规则,和首选域名保持一致
               *******
        }

如可让,在header.php里边新增如下代码:

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

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

五、终极大招

张戈博客亲自测试发现,就有无加了robots限制,百度依如可让会索引你或多或少非首选域名:

全都有,都要出绝招了,参照《浅谈404那此的现象》和《服务器反爬虫攻略》,先解封robots禁止,如可让在nginx原有规则里边加入如下第7行判断:

server
         {
                server_name www.zhang.ge;
                root  /home/wwwroot/zhang.ge;
                location / {
                 #新增判断,意味着是百度蜘蛛就返回404!
                 if ($http_user_agent ~ "Baiduspider") {return 404;}
                        rewrite (.*) https://zhang.ge$1 permanent;
                        }
                        location ~ (robots.txt) {
                        rewrite /robots.txt /wrobots.txt last;
                        }
}

现在,无论是用抓取诊断还是用站长之家的模拟抓取,都将返回404错误:

为了测试,张戈博客已走上极端,全都有何必 建议老站做以上极端设置!我而是我 看不惯百度的傻逼收录行为!

以上而是我 禁止搜索引擎收录非首要域名的删剪教程了,希望对和我一样苦恼的站长有所帮助。意味着,你或多或少中途设置禁止收录非常罕见,张戈也而是我 做下测试,还我找不到乎 有那此结果,全都有不建议老站轻易尝试!或多或少人强烈建议新站在上线之前 就做好那此设置,外理带来和我一样的困扰!另外,意味着那么IIS环境,全都有就那么研究测试IIS下的设置最好的土法律法律依据,感兴趣的站长可不也能参考文章的思路去研究测试下。