Написать скрипт для WP исправляющий битые ссылки

Бюджет: по договоренности
Заказчик выбрал исполнителя:
Андрей Толкачёв  
Проблема.

Сайт на WP.

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

Особенность ситуации в том, что у правильных и неправильных ссылок на один и тот же пост есть одинаковые фрагменты. Это транслитерация названий постов. Эти участки URL одинаковые и в правильной и в неправильной ссылке.
Отличаются неправильные ссылки наличием и форматом категорий, разделенных слешами, бывают ссылки со слэшем в конце. Бывают с .html в конце. Бывают открытые. С правильными ссылками – то же самое, только в разнобой. Это видно по sitemap.xml.

Вероятной причиной может быть некорректная работа плагина Custom Permalinks, который года два назад непонятно зачем поставили и так им и не пользовались.

Задача.

1. Перехватить неправильную ссылку.
2. Выделить транслитерацию названия.
3. По ней определить правильную ссылку.
4. Положить обе ссылки в таблицу. В этой таблице должно быть поле с ID поста. В этой же таблице накапливать статистику обращений по неправильной ссылке.
5. Далее варианты, которые можно настраивать.
    – вернуть правильную страницу с кодом 200. (возможно раздвоение статей, поэтому в возвращаемую страницу нужно будет добавлять мета-теги канонической страницы(правильной);
    – вернуть редирект на правильную страницу с кодом 301;
    – вернуть ошибку 404.
    
Возможны варианты решения задачи доработкой имеющихся в базе WP плагинов. Например Redirection.

Работа срочная. Страницы продолжают выпадать из индекса.

Исполнитель должен в совершенстве знать структуру данных и структуру и алгоритмику функционирования движка WP.

Опубликован 17.12.2015 в 10:29 Последнее изменение: 17.12.2015 в 10:29

Выберите способ верификации:

Обновите страницу после прохождения верификации.