Иногда я использую встроенный режим паука wget для удобства, чтобы быстро проверить локальный сайт на наличие битых ссылок. Сегодня утром я обратил его внимание на рабочий сайт, на котором мы только что внесли серьезные изменения, и он выдает 3 битые ссылки, но, похоже, невозможно определить, где они находятся! (Он только сообщает, на что они ссылаются, и нет простого способа связать это со страницей.)
Параметры, которые я сейчас использую, следующие wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt
. Кто-нибудь знает параметр, который я упускаю из виду, способ прочитать вывод или даже простую замену этой команды, которая также даст мне знать, в каком файле находятся ссылки (и в идеале номер строки)?
решение1
Вы должны иметь возможность просматривать журналы веб-сервера в сочетании с запуском wget. Найдите 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)'
Вы можете сделать подобный grepping в вашем журнале. Предостережение: некоторые wget не скомпилированы с поддержкой--debug