301 редирект в MODx Revolution

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

Мне пришлось озадачиться этим вопросом в тот момент, когда я все же решил перейти с самописной системой архивов на расширение Archivist, а заодно изменить структуру сайта таким образом, чтобы разделить записи в блоге в контейнеры по годам, т. к. хоть за 4 года существования сайта постов было и не огромное количество, но стало заметно неудобно раскрывать ветвь Блог и искать в ней нужный документ.

Раньше все блогозаписи были дочерними документами контейнера Блог и поэтому имели адреса вида blog/blog-page-alias.html. При создании же дополнительных контейнеров для годов и перемещении в них документов их URL изменился на blog/year/blog-page-alias.html. В связи с этим все внешние ссылки на мои статьи становились нерабочими, что, конечно же, весьма печально. Для решения этой проблемы существует прекрасная вещь — код ответа сервера 301 Moved Permanently, известный в народе как 301-й редирект. Реализовать его можно различными способами, но мне не хотелось возиться с прописыванием регулярных выражений в .htaccess, поэтому я решил поискать готовые расширения для MODx Revolution. И таковое нашлось — Redirector.

Работает довольно просто. После установки через менеджер пакетов в меню Компоненты главного меню появляется пункт Redirector, при нажатии на который появляется таблица созданных редиректов. Реализован компонент через плагин, который срабатывает на системное событие OnPageNotFound и пытается найти запрашиваемый URL в. своей таблице. Если таковой находится-то он возвращает ответ с перенаправлением на новый адрес. Все легко и просто.

Единственный момент, с которым я столкнулся в начале — это формат записи URL. В самом начале я использовал адреса вида /blog/blog-page-alias.html, и они не работали. Потом попробовал писать полные адреса, т. е. http://bounz.net/blog/blog-page-alias.html, но они тоже не работали. После того, как посмотрел в исходный код плагина понял, как следовало записывать адреса: без слеша в начале, т. е. просто blog/blog-page-alias.html. После этого все заработало.

Теперь внутреняя структура блога меня полностью устраивает, а старые ссылки прекрасно работают.

Быстрых вам редиректов!

Пт, 15.04.2011

Теги: MODx, руководство