在现有的.Net MVC3网站上,我们实现了分页,其中URL看起来像www.mysite.com/someterm/anotherterm/_p/89/10
,其中89是页码,10是每页的结果数。
不幸的是,大于3的页码链接中缺少rel="nofollow"
,而且这些页面也缺少<meta name="robots" content="noindex,nofollow" />
。
问题在于谷歌和其他一些搜索引擎现在已经将这些页面编入索引,并且现在正经常尝试抓取所有这些页面,这正如我们发现的那样开始对prod数据库服务器产生巨大影响。我们不希望所有这些额外的数千页被抓取,只有前几页。
我将代码还原为不包含分页的网站版本,这样我们的数据库服务器现在就不会那么难受。因此,虽然搜索引擎会为所有这些页面获得404错误,但我想知道这是否是最好的事情,因为过了一段时间我会再次介绍寻呼网站?
我可以将以下内容添加到web.config中,以便将所有404重定向到主页:
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/" responseMode="ExecuteURL"/>
</httpErrors>
但是我认为这样做会被呈现为具有分页URL参数的所有页面的“重复内容”。
这里最好的想法是让那些404继续一两周 - 然后重新引入寻呼网站吗?
另一种选择可能是发布寻呼网站,添加一些代码以拒绝大于3的网页上的抓取工具。建议?
是否有更快捷的方式将这些网页从索引中删除,以便不会被抓取?
感谢。
答案 0 :(得分:0)
除非作为最后的手段,否则我不会诉诸404,并且重复的内容可能会导致您失去网页排名。我要做的第一件事是创建一个Google Webmaster Tools帐户,并配置您希望如何抓取您的网页,删除网页,使用哪些属性等等。
为Bing做同样的(网站管理员工具),你应该在一两天内完成。 (Bing的引擎被许多其他搜索引擎使用,看起来你对Bing的更改也会流向他们。)
答案 1 :(得分:0)
尝试创建robots.txt大多数(非黑帽)抓取工具如果您将其放在robots.txt文件中,则应该尊重该网页的阻止。
这是一个工具: http://www.mcanerin.com/EN/search-engine/robots-txt.asp
谷歌的网站管理员工具也为您提供了很好的网站,也可以帮助robots.txt
答案 2 :(得分:0)
简单地将页面保留为404不会,因为这是永久删除。查看RFC 2616超文本传输协议 - HTTP / 1.1第10章。状态代码定义:
“请求的资源在服务器上不再可用,没有 转发地址是已知的。预计这种情况会发生 被视为永久性具有链接编辑功能的客户端应该 用户批准后删除对Request-URI的引用。如果 服务器不知道,或无法确定,无论是否 条件是永久的,状态代码404(未找到)应该是 用来代替。除非另有说明,否则此响应是可缓存的。
410响应主要用于协助网络任务 通过通知收件人资源是维护 故意不可用,服务器所有者希望如此 将删除该资源的远程链接。这样的事件很常见 限时,促销服务和属于的资源 个人不再在服务器的网站上工作。它不是 必须将所有永久不可用的资源标记为“已消失”或 保持标记任何时间长度 - 留给 服务器所有者的自由裁量权。“
我只是添加了一个新的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 });