有時我會使用 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