Перелинковка, как исправить битые ссылки

Перелинковка, как исправить битые ссылки

Перелинковка, как исправить битые ссылки

На днях я дошел до задачи, которая на первый взгляд не содержала в себе сложностей. Но как это часто бывает — одно тянет за собой другое). Собственно и этот случай не исключение.

Суть задачи была такой:

  1. Нужно перенести блог, написанный на WordPress, с одного домена, на субдомен другого;
  2. Обновить систему и плагины до последних версий;
  3. Сверстать шаблон под стили нового сайта;
  4. Редирект + мониторинг корректного переноса.

Вообщем ничего сложного в задаче я не увидел. Но когда начал планировать реализацию и проводить анализ сайта, стало понятно что легко я не отделаюсь.  Все дело в том, что в старых статьях было очень много внутренних ссылок на не существующие материалы, а ведь внутренняя перелинковка сейчас очень важна для оптимизации сайта, скорей всего ранее этот блог был написан на другой системе (или еще хуже на чистом html) и в конечном итоге перенесен на вордпрес.

С этим нужно было что то делать. Перебрав некоторые варианты, остановился на следующем решении: Пропарсить каждую статью достав из нее все внутренние битые ссылки, потом из каждой этой ссылки достать якорь и обратиться с ним в гугл для получения самой релевантной страницы сайта по его мнению,  к примеру запрос выглядел так: site:gotit.com.ua перелинковка и беру самую первую страницу в выдаче (самая релевантная по такому запросу). По моему мнению такой подход позитивно повлияет на СЕО сайта, так как ранее те ссылки вели на 404 — ошибку, то сейчас они направлены на релевантную страницу, а так же должно улучшиться юзабилити.

Итак я написал модуль, который должен исправить битые внутренние ссылки. Немного расскажу о том, как  он работает, как его установить и запустить у себя на сайте (пока только на водпрес). Сейчас он заточен и протестирован на WordPress, хотя его можно подключить и под другие системы, но с внесением правок и настроек. Если этот модуль действительно будет полезен большой аудитории, тогда может и задумаюсь переписать и сделать его полностью универсальным (пока таковой задачи нет).

Скачать модуль можно по этой ссылке https://github.com/cahuk/fix-internal-links.

Алгоритм работы модуля исправления связанных ссылок

  1. Берем самый первый существующий материал
  2. Заносим его ИД  в лог (папка log/ID). Это нужно, что бы мы могли определить где остановилась программа если произойдет сбой, и потом с этого ИД мы сможем продолжить работу программы.
  3. Парсим контент, доставая из него все внутренние ссылки.
  4. Проходим по каждой из ссылок, проверяя на доступность (ответ сервера 200).
  5. Если это не так, тогда берем якорь ссылки и обращаемся c ним в таблицу links_query_cache (в нее записываются якоря и уже найденные релевантные страницы полученные от гугл), если по этому ключу уже есть ссылка, тогда нужно исправить ссылку, перезаписываем ее в контенте материала.
  6. Если же в нашем кеше еще нет такого ключа, значит обращаемся с запросом в гугл по принципу site:gotit.com.ua перелинковка. Если результат получен, тогда записываем ключ и релевантную страницу в наш кеш и так же перезаписываем старую ссылку в контенте. Ждем 10 секунд, что бы не частить с запросами в гугл.
  7. Переходим к следующему посту, он осуществляется по следующему принципу: система получает имя файла в папке log (это ИД последнего обработанного материала), прибавляет + 1 и получает следующий материал, так будет продолжаться, пока мы не достигнем максимального ИД.

Бывает случай, когда мы попадаем вместо страницы выдачи гугл  на страницу с вводом капчи (антибот). Тогда система увеличивает интервал задержки между обработкой постов на 2 часа, при каждом таком попадании. То есть если мы попали два раза на капчу, тогда следующий запрос будет отправлен через 4 часа и т.д.. Если же далее мы попали на страницу выдачи, тогда интервал задержки становиться по умолчанию — 10 сек.

Во время работы идет так же подсчет статистики обращения к гугл, попадания на старницу с капчей, сколько битых ссылок было найдено и сколько из них было исправлено. Этот отчет придет на емейл после завершения работы программы.

Битые ссылки, как исправить с помощью модуля

После того, как модуль был скачан нужно провести некоторые настройки:

  1. Открываем файл fix-internal-links.php и задаем константе HOST домен Вашего сайта, на котором будем исправлять внутренние ссылки.
  2. Добавить свой емейл в массив $_report_email (можно несколько, через запятую). На эти адреса придет отчет после выполнения программы.
  3. Если планируете запускать этот модуль несколько раз, тогда нужно указать константе DELETE_LOG_AFTER_COMPLETE = true; Но при этом, когда программа отработает, лог файл будет удален из папки log.
  4. Теперь открываем класс для работы с базой данных ./class/Db.php и указываем доступы к БД $dbserver = ‘localhost’; $dbuser = ‘user’; $dbpassword = ‘password’; $dbname = ‘db_name’;
  5. Далее в БД необходимо создать таблицу кеша обращений в гугл, для этого нужно выполнить запрос из файла links_query_cache.txt
  6. Теперь можно запустить наш модуль, для этого нужно обратиться по адресу www.yourdomain.com/fix-internal-links.php,  если ваш блог содержит много материалов, тогда этот процес может занять очень много времени, поэтому рекомендую запустить мдуль на сервере через ssh в фоновом режиме.

К сожалению битые связанные ссылки не так просто найти, но благо имеются различные сервисы которые могут упростить эту задачу, например битые ссылки на сайте поможет обнаружить сервис http://validator.w3.org/checklink, (проверка битых ссылок может занять много времени). Если при проверки обнаружиться не большое количество ссылок, тогда их можно исправить руками в другом случае можно использовать этот модуль.

Буду рад комментариям и признателен за помощь в доработке системы. Небольшая статья о том, что такое перелинковка и какова от нее польза находиться по ссылке Перелинковка, внутренняя и внешняя перелинковка

Спасибо за внимание!

0 ответы

Ответить

Хотите присоединиться к дискуссии?
Приглашаем поучаствовать!

Добавить комментарий