如何修复不应被GoogleBot和其他搜索引擎抓取工具抓取的索引页面?



在现有的上。Net MVC3站点,我们实现了分页,其中URL看起来像www.mysite.com/someterm/anotherterm/_p/89/10,其中89是页码,10是每页的结果数。

不幸的是,大于3的页码链接中缺少rel="nofollow",这些页面也缺少<meta name="robots" content="noindex,nofollow" />

问题是,谷歌和其他一些搜索引擎现在已经为这些页面编制了索引,并经常试图对所有页面进行爬网,正如我们发现的那样,这开始对prod-db服务器产生巨大影响。我们不希望所有额外的数千页都被爬网,只希望最初的几页。

我将代码恢复到不包括分页的网站版本,这样我们的数据库服务器现在就不会受到太大的打击。所以,虽然搜索引擎会在所有这些页面上得到404个错误,但我想知道这是否是最好的做法,因为过一段时间我会再次介绍寻呼网站?

我可以在web.config中添加以下内容,将所有404重定向到主页:

 <httpErrors errorMode="Custom">
     <remove statusCode="404"/>
     <error statusCode="404" path="/" responseMode="ExecuteURL"/>
  </httpErrors>

但我认为,对于所有带有分页URL参数的页面,这样做将被呈现为"重复内容"。

这里最好的想法是让404继续一两周,然后重新引入寻呼网站吗?

另一种选择可能是释放页面站点,并添加一些代码来拒绝大于3的页面上的爬网程序。建议?

有没有一种更快的方法可以将这些页面从索引中取出,这样它们就不会被爬网?

谢谢。

尝试创建一个robots.txt,如果您将其放在robots..txt文件中,大多数(非黑帽)爬网程序都应该尊重对该页面的阻止。

这里有一个工具:http://www.mcanerin.com/EN/search-engine/robots-txt.asp

此外,谷歌的网站管理员工具为您提供了很棒的网站,也可以帮助您使用robots.txt

简单地将页面保留为404是不行的,因为这是一个永久删除。查看RFC 2616超文本传输协议HTTP/1.1第10章。状态代码定义:

"请求的资源在服务器上不再可用转发地址是已知的。这种情况预计为被认为是永久性的。具有链接编辑功能的客户端应该在用户批准后删除对请求URI的引用。如果服务器不知道或没有确定的功能如果条件是永久性的,则状态代码404(未找到)应为而是使用。除非另有说明,否则此响应是可缓存的。

410的响应主要是为了协助web的任务通过通知接收方资源故意不可用,并且服务器所有者希望到该资源的远程链接将被删除。这样的事件对于有限的时间,促销服务和属于不再在服务器站点工作的个人。事实并非如此需要将所有永久不可用的资源标记为"消失",或将标记保留任意长度的时间--这取决于服务器所有者自行决定。"

我只是添加了一个新的ActuionResult方法:

    public ActionResult Http410()
    {
        return new HttpStatusCodeResult(410);
    }

并为匹配"__p"创建了新的路由:

routes.MapRoute(name: "WholeCountryResultsWithPaging__p", url: "{searchTerm}/__p/{pageNumber}/{pageSize}", defaults: new { controller = "Errors", action = "Http410", pageNumber = UrlParameter.Optional, pageSize = UrlParameter.Optional });

除非万不得已,否则我不会求助于404,重复的内容可能会导致您失去页面排名。我要做的第一件事是创建一个谷歌站长工具帐户,并配置你希望它如何抓取你的页面,删除页面,使用什么属性,等等。

对Bing做同样的(网站管理员工具),你应该在一两天内就明白了。(许多其他搜索引擎都在使用Bing的引擎,你对Bing的更改似乎也会影响到它们。)