event->name == 'OnPageNotFound') { $url = $_SERVER['REQUEST_URI']; if (substr($url, -5) == ".html") $url = substr($url, 0, -5); if (substr($url, -1) == "/") $url = substr($url, 0, -1); $url = str_replace($modx->getOption("site_url"),"",$url); $url_array = explode('/', $url); $alias = array_pop($url_array); $res = $modx->getObject('modResource', array("alias" => $alias)); if ($res) $modx->sendRedirect($modx->makeUrl($res->get('id')), ['responseCode' => 'HTTP/1.1 301 Moved Permanently']); }Кстати, с его помощью можно легко перейти на другую схему URL (вложенные или нет) или можно вообще отключить дружественные URL. UPD. Обновил код. Теперь не страшно, если вдруг переключится значение чекбокса "Контейнер", ну и в случае, если ресурс не найден, нормально покажется 404 ошибка. G+ Оригинал статьи http://community.modx-cms.ru/blog/tips_and_tricks/9508.html
Небольшой плагин для редиректа если страница перенесена
09 апреля 2013, 17:04
Переношу один сайт на MODX. Решили несколько изменить структуру сайта и некоторые страницы были перенесены на верхний уровень (а некоторые - наоборот внутрь общего контейнера).
Чтобы не составлять вручную списки для редиректов написал небольшой плагинчик, который вычленяет из адреса alias, ищет по нему документ и редиректит на правильный адрес:
0 комментариев