0

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

不幸的rel="nofollow"是,大于 3 的页码链接丢失了,并且这些页面也丢失了<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 个页面的爬虫。建议?

有没有更快的方法将这些页面从索引中取出,这样它们就不会被抓取?

谢谢。

4

3 回答 3

0

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

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

410 响应的主要目的是通过通知接收者资源故意不可用并且服务器所有者希望删除到该资源的远程链接来协助 Web 维护任务。这种事件对于限时促销服务和属于不再在服务器站点工作的个人的资源很常见。没有必要将所有永久不可用的资源标记为“已消失”或将标记保留任意时间——这由服务器所有者自行决定。”</p>

我只是添加了一个新的 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 });
于 2012-08-21T19:39:19.310 回答
0

除非万不得已,否则我不会诉诸 404,重复的内容可能会导致您的页面排名下降。我要做的第一件事是创建一个Google 网站管理员工具帐户并配置您希望它如何抓取您的页面、删除页面、使用哪些属性等。

为 Bing 做同样的事情(网站管理员工具),你应该在一两天内就清楚了。(Bing 的引擎被许多其他搜索引擎使用,而且您对 Bing 的更改似乎也影响到了它们。)

于 2012-08-04T08:51:58.753 回答
0

尝试创建 robots.txt 大多数(非黑帽)爬虫应该尊重该页面的阻止,如果您将它放在 robots.txt 文件中。

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

谷歌的网站管理员工具也为您提供了出色的网站,还可以帮助您使用 robots.txt

于 2012-08-05T08:54:12.527 回答