有时我会使用 wget 的内置蜘蛛模式来快速检查本地站点是否有损坏的链接,以方便使用。今天早上,我将注意力转向了我们刚刚进行重大更改的生产站点,它出现了 3 个损坏的链接,但似乎无法判断它们在哪里! (它只说明了他们链接到的内容,并且没有直接的方法将其单独关联回页面。)
我当前使用的选项是wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt
.有谁知道我忽略的一个选项,一种读取输出的方法,或者甚至是这个命令的简单替代品,它也能让我知道链接出现在哪个文件中(最好是行#)?
答案1
您应该能够结合 wget 运行来查看 Web 服务器日志。404
在日志文件中查找并提取该referrer
字段。这将告诉您包含损坏链接的页面。
然后只需检查该页面是否有违规链接即可。
答案2
一个好方法(不涉及网络服务器日志)是使用 flag--debug
和 grep^Referer:
在命令行上:
wget -r -nv --spider http://www.domain.com/ 2>&1 | egrep -A 1 '(^---response end---$|^--[0-9]{4}-[0-9]{2}-[0-9]{2}|^[0-9]{4}-[0-9]{2}-[0-9]{2} ERROR|^Referer:|^Remote file does not)'
您可以在日志上执行类似的 grep 操作。警告:某些 wget 编译时不支持--debug