私は時々、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