目前的情况是,由于域名重定向,我们在网站的不同位置寻找 robots.txt,从而收到成千上万个 404 错误。
我们的旧网站是一个由 dotnetnuke 提供支持的迷宫般的多站点,具有多个域名。我们已将其更改为 Wordpress 上的单个站点,具有一个域名。其余域名现在仅重定向到网站上的类别。这意味着 googlebot、bingbot 和许多其他机器人会反复尝试索引曾经是成熟站点的域名并被重定向。
www.EXAMPLE.co.uk 重定向至 www.EXAMPLE.co.uk/challenge/
因此 /challenge/robots.txt 中有超过一千个 404 错误
与其他重定向相同,最终到达 /walktoschool/robots.txt 等
有没有一种聪明的方法来重定向机器人?或者应该采用其他方法来处理这个问题或让机器人停止?我们的新网站甚至不使用 robots.txt,而是结合使用 htaccess 和 Better WP Security。我已经向 Google 和 Bing 提出了重新抓取新网站的请求,但结果就是这样。
我是一家非营利组织的业余网站管理员,我真的必须全力以赴,任何帮助都将不胜感激!
答案1
当执行您正在执行的重定向时,只有一个适用的 HTTP 响应代码,即301 Moved Permanently
。RFC 2616定义 HTTP 协议的标准对 301 响应代码的定义如下(重点是我加上的):
请求的资源已被分配了一个新的永久 URI以及任何将来对此资源的引用应该使用返回的 URI 之一。具有链接编辑功能的客户端应该自动将对请求 URI 的引用重新链接到一个或多个新引用由服务器返回(如果可能)。此响应可缓存除非另有说明。
新的永久 URI 应由响应中的 Location 字段提供。除非请求方法是 HEAD,否则响应实体应包含一个简短的超文本注释,其中包含指向新 URI 的超链接。
如果响应除 GET 或 HEAD 之外的请求而收到 301 状态代码,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件。
将其与 HTTP302 Found
重定向进行对比,HTTP 重定向通常在简单配置“重定向”时使用,其定义为(再次强调):
请求的资源位于暂时地在不同 URI 下。由于重定向可能会偶尔发生改变,客户端应该继续使用 Request-URI 进行将来的请求。此回复仅当指示时才可缓存通过 Cache-Control 或 Expires 标头字段。
临时 URI 应由响应中的 Location 字段提供。除非请求方法是 HEAD,否则响应实体应包含一个简短的超文本注释,其中包含指向新 URI 的超链接。
如果响应除 GET 或 HEAD 之外的请求而收到 302 状态代码,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件。
因此,在您的场景中执行 HTTP 重定向的正确方法是配置 Web 服务器以返回301响应指示新位置,而不是302响应。然后,有能力的客户端将存储新的 URL 并将其用于任何未来的请求。
答案2
我认为最好不要重定向请求,/robots.txt
同时仍然重定向其他所有内容。如果旧网站曾经有一个/robots.txt
文件,您可能应该保留它。否则,一个空文件就可以了。但您也可以决定是时候进行一些清理,并将/robots.txt
文件放在旧域上,这些域不允许抓取在合并期间或之后被删除的页面。