場合によっては、wgetの組み込みスパイダーモードを使用して、便宜のために壊れたリンクがあるかどうかをローカルサイトをすばやく確認します。今朝、私は大々的な変更を加えた本番サイトに注意を払いました。リンク3つが切れたがどこにいるのか分からないようでした! (どのコンテンツにリンクされているが指定されており、個別にページに再リンクする直接的な方法はありません。)
私が現在使用しているオプションはですwget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt
。私が見落としたオプション、出力を読み取る方法、またはリンクが表示されるファイルを知らせるこのコマンドの簡単な代替方法を知っている人はいますか? #)?
答え1
Webサーバーのログを表示するには、wgetで実行できる必要があります。404
ログファイルでフィールドを見つけて抽出しますreferrer
。これにより、どのページに壊れたリンクが含まれているかがわかります。
次に、ページに問題のあるリンクがあることを確認してください。
答え2
(Webサーバーログを含まない)良い方法は、フラグ--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