[easyRedirects] Еще один компонент для управления редиректами
Привет!
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.

Возможности:
modstore.pro/packages/utilities/easyredirects
Ссылка на github:
github.com/createit-ru/easyRedirects
Если вам пригодился компонент, есть желание поблагодарить чашкой кофе — можно сделать это нажав на кнопочку:

Благодарности ускорят внедрение новых функций, увеличат мою мотивацию, заставят меня внимательно прислушиваться к вашим пожеланиям!!!
Обновления (детали доступны в changelog.txt):
28.11.2023 — 1.0.1-pl
19.12.2023 — 1.1.0-pl — выбор кода ответа сервера, улучшена поддержка MODX 3
easyRedirects — дополнение для управления редиректами (с возможностью выбора кода ответа из 301, 302, 307, 308) в панели управления сайтами.
Для MODX есть несколько компонентов, которые позволяют из админки управлять редиректами со старых url на новые. Из тех, что знаю я — это Redirector (наверное самый первый компонент, ему 10+ лет точно, но надо сказать, его периодически обновляют), и autoRedirector. Кстати, они поддерживают только 301 редирект, а вот 302 или более свежие 307 и 308 — нет.
При попытке применить их на моем сайте выплыли проблемы:
1. Redirector не позволял создать редирект на произвольный url, он обязательно хотел видеть в качестве цели существующий ресурс. А мне так не нужно было, у меня страницы генерируются своим плагином, обрабатывающим событие OnPageNotFound, т.е. целевого ресурса как такового на сайте нет.
2. autoRedirector больше заточен на отслеживание измененных url, ну и у него та же особенность — конечный url редиректа должен принадлежать существующему ресурсу.
В общем в итоге пара вечеров и готова первая версия easyRedirects. По сути это сильно модифицированный и дополненный Redirector.

Возможности:
- создание произвольного кол-ва редиректов в адмике;
- создание нового редиректа путем копирования существующего;
- можно задать код ответа сервера (301, 302, 307, 308);
- для редиректа можно указать как просто адрес (напр. catalog/telefony => catalog/phones) так и регулярное выражение с подстановками (напр. ^catalog\/category-(.*)$ => catalog/$1);
- для каждого редиректа считается кол-во срабатываний, дата и время первого и последнего срабатывания;
- можно для каждого редиректа задать метку, чтобы в дальнейшем проще их находить (например, написать «этап 1», «старые редиректы» и т.п.);
- для каждого редиректа в базе есть запись когда и кем он создан или изменен (поля createdon, createdby, updatedon, updatedby);
- есть отслеживание смены url страниц сайта (без учета вложенности правда), см. системную настройку easyredirects_track, работает так же как в компоненте Redirector;
- есть импорт правил из текста в формате csv.
modstore.pro/packages/utilities/easyredirects
Ссылка на github:
github.com/createit-ru/easyRedirects
Если вам пригодился компонент, есть желание поблагодарить чашкой кофе — можно сделать это нажав на кнопочку:

Благодарности ускорят внедрение новых функций, увеличат мою мотивацию, заставят меня внимательно прислушиваться к вашим пожеланиям!!!
Обновления (детали доступны в changelog.txt):
28.11.2023 — 1.0.1-pl
19.12.2023 — 1.1.0-pl — выбор кода ответа сервера, улучшена поддержка MODX 3
Комментарии: 18
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Тоже намучился с Redirector, что в итоге пришлось CloudFlare подключать на сайты для нормальных редиректов.
А ещё у Redirector глюк с базой данный и редиректами между контекстами
Донат прилагается ?
Проведу еще тесты на срабатывание редиректов, если что поправлю и обновлю компонент.
Правда вот с контекстами вряд ли смогу, т.к. на своих сайтах их не применяю.
Не получится точнее описать, с какими неточностями столкнулись?
Пробую: index ИЛИ / ИЛИ index.html -> modx.pro/components/24389
главную удаляю, но редиректа не происходит
Дело в том, что у главной страницы uri — index, а url, который открываем в браузере — пустой.
Чтобы компонент смог обработать такой редирект — нужно прям отдельное условие добавить в код…
но почему бы не сделать через регулярное выражение?
но естественно, что это сработает, только если все страницы сайт.ру/en/ не будут опубликованы, т.к. компонент работает через плагин на OnPageNotFound
Но есть одно но) Все компоненты для того чтобы узнать какой был старый url у страницы — они его сохраняют где-то заранее, к примеру на событии OnBeforeDocFormSave (в properties ресурса) или OnDocFormRender (в сессию). И только потом на OnDocFormSave уже идет сравнение старого адреса и нового и при необходимости создание редиректа.
Ну в общем то любой компонент для импорта событие OnDocFormRender точно не вызовет.
В принципе OnBeforeDocFormSave в autoRedirector вроде как должен срабатывать, если msImportExport обновляет товар через процессор resource/update… но не знаю, не разбирался.
В общем для них лучше свой плагин написать с созданием правил редиректа (благо там и нужно то заполнить 2 поля минимально), насколько помню у того же msImportExport есть событие, куда приходят данные при обновлении товара.
Было бы супер добавить кнопку копировать редирект, чтобы не заполнять каждый раз заново
Рад активному пользователю =)