在修改代码之前,我正在镜像我正在使用的服务器。为此,我使用了命令
wget -m <address>
看起来一切都在那里。但这是什么?robots.txt 文件?我仔细检查了一下,robots.txt 在服务器上不存在。然后我查看了 robots.txt 文件的内容,它包含来自服务器的 404 页面。
就像在服务器上一样:
/var/www$ ls robots.txt
ls: cannot access robots.txt: No such file or directory
但是在wget镜像文件夹中,有一个创建的robots.txt文件。
好的,我以为 wget -m 是一种镜像方式。为什么它会插入不存在的东西?
答案1
您可以使用忽略 robots.txt 文件的选项-e robots=off
。但是,如果网络服务器不是您的,则忽略 robots.txt 文件会被视为不礼貌的行为。
答案2
问题不在于 wget 将 robots.txt 文件插入到不该插入的位置,而在于您镜像内容的服务器。该服务器显然配置错误,无法处理类型 200 的请求,因此,当 wget 查找 wget 页面时,它会重新创建 404 请求。
不久前,我查看了 wget 源代码。我认为归根结底,wget 总是会查找 robots.txt 文件。但是,在大多数情况下,如果该文件为空,wget 会将其删除。就您而言,该文件由 wget 尝试访问时获得的 404 页面归档。
不幸的是,我不知道如何修复类型 200 HTTP 请求错误,为此,我们需要更多有关服务器的信息。