在现有的上。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的更改似乎也会影响到它们。)