我检查了日志,发现搜索引擎在我的网站上访问了很多虚假 URL。它们很可能是在很多链接被更改之前发生的,即使我进行了 301 重定向,一些链接也以非常奇怪的方式被更改,并且无法被我的 .htaccess 文件识别。
所有请求都由 index.php 处理。如果由于 URL 错误而无法创建响应,则会显示自定义错误页面。简化代码 index.php 看起来像这样
try {
$Request = new Request();
$Request->respond();
} catch(NoresponseException $e) {
$Request->presentErrorPage();
}
我刚刚意识到这个页面返回一个状态 200 告诉机器人该页面是有效的,即使它不是。
在 catch 语句中添加带有 404 的标头是否足以告诉机器人停止访问该页面?
像这样:
header("HTTP/1.0 404 Not Found");
当我测试它时它看起来不错,但我担心 SE 机器人(可能还有用户代理)会感到困惑。