Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы

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

В этом деле нам поможет старый добрый 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 Not Found'

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

Я нашел решение которое работает не на 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 как и в первом случае + еще один прогон для проверки ссылок на несуществующие ресурсы:

# grep -B 2 'failed' ~/site_ru.log
Материал взят с сайта: http://mrdeveloper.ru/post-41/check-broken-links-with-wget

Главная > Программы