13 Сентябрь, 2014

Проверяем сайт на наличие битых ссылок

В этом деле нам поможет старый добрый wget:

wget --spider -o ~/site_ru.log -e robots=off -w 1 -r -p http://site.ru

Краткая расшифровка опций:

  • --spider, режим «паука», файлы при сканировании не сохраняются, сохраняются только заголовки ответа сервера

  • -o, указываем куда нам сохранять лог

  • -e robots=off, говорим что не хотим следовать правилам robots.txt (по умолчанию wget их учитывает)

  • -w, выставляем тайм-айт между запросами в 1 секунду (можно отключить если уверены в мощности хостинга)

  • -r, включаем рекурсивный обход сайта

  • -p, делаем все запросы для загрузки сайта включая подгрузку css,js и например изображений

Проверяем свой улов на наличие 404 ошибок - grep -B 2 '404' ~/site_ru.log

Кстати, сюда также попадут и ссылки у которых просто в теле адреса есть слово 404 (пример hamdeew.ru/page/bitriks-delaem-stranicu-404-pravilno)

Все бы хорошо, да этот метод не покажет нам битые ссылки на чужие ресурсы. А это довольно важно - например у вас могут подгружаться картинки с других ресурсов и т.д.

Я нашел решение которое работает не на 100 процентов и оно довольно кривое (из-за некотрых особенностей wget), но тем не менее мне оно помогло отыскать битые ссылки на картинки и найти одну 404.

mkdir ~/test/

cd ~/test/

Директорию создаем т.к. метод довольно грязный - создает кучу пустых директорий в процессе работы.

wget -r -l 1 -H -p -o ~/test/site_ru_out.log --spider -e robots=off http://site.ru/

И затем прогоняем получившийся у нас site_ru_out.log грепом как и в первом случае + еще один прогон для проверки ссылок на несуществующие ресурсы:

grep -B 2 'failed' ~/site_ru.log

Надеюсь что вам этот способ помог. Удачи!

Новый комментарий

comments powered by Disqus