wget --spider: 壊れたリンクがどこから来ているのかを知る方法

wget --spider: 壊れたリンクがどこから来ているのかを知る方法

私は時々、wget の組み込みスパイダー モードを便利に使って、ローカル サイトの壊れたリンクをすばやくチェックします。今朝、大きな変更を加えたばかりの実稼働サイトに注目したところ、壊れたリンクが 3 つ見つかりましたが、それがどこにあるかはわかりません! (リンク先だけが表示され、それだけをページに関連付ける簡単な方法はありません。)

現在使用しているオプションは ですwget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt。私が見落としているオプション、出力の読み取り方法、またはこのコマンドの簡単な代替手段で、リンクがどのファイルに表示されるか (できれば行番号も) を知らせてくれるものをご存知の方はいらっしゃいますか?

答え1

wget の実行と連動して、Web サーバーのログを監視できるはずです。404ログ ファイルで 's を探して、referrerフィールドを取得します。これにより、壊れたリンクを含むページがわかります。

その後は、問題のあるリンクがないかそのページを調べるだけです。

答え2

良い方法(ウェブサーバーのログを使わない)は、--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

関連情報