Skip to content

Instantly share code, notes, and snippets.

@andronex
Last active March 6, 2019 00:46
Show Gist options
  • Save andronex/e070364f4c4c52af3f8d to your computer and use it in GitHub Desktop.
Save andronex/e070364f4c4c52af3f8d to your computer and use it in GitHub Desktop.
Плагин для редиректа со старых URL на новые в MODX Revo и плагин для редиректа на URL с закрывающим слэшем для контейнеров.
<?php
/**
* Вешаем плагин на OnWebPagePrerender
* Нужен для редиректа для контейнеров (ресурсов с isfolder=1) на URL с закрывающим слэшем,
* если они открыты без закрывающего слэша.
* Т.е. плагин всегда добавляет для контейнеров закрывающий слэш.
* Корректно обрабатывает передаваемые в GET запросе параметры - в случае редиректа в новом
* URL параметры тоже будут добавлены.
*/
$redir301mov = array('responseCode' => 'HTTP/1.1 301 Moved Permanently');
switch ($modx->event->name) {
case 'OnWebPagePrerender':
$get_url = parse_url($_SERVER['REQUEST_URI']);
if($modx->resource->isfolder && !preg_match("/\/$/",$get_url['path'])) {
$url = (isset($get_url['query'])) ? $modx->makeUrl($modx->resource->id, '', $get_url['query']) : $modx->makeUrl($modx->resource->id);
$modx->sendRedirect($url, $redir301mov);
}
break;
}
<?php
/**
* Вешаем плагин на системное событие OnHandleRequest
* Название плагина любое
* Нужен для перенаправления юзеров со старых страниц на новые или при изменении URL страницы,
* для склейки страниц в ПС
* @author Andrey aka andronex <i.modx(at)ya.ru>
*/
$redir301mov = array('responseCode' => 'HTTP/1.1 301 Moved Permanently');
switch ($modx->event->name) {
case 'OnHandleRequest':
//$modx->log(modX::LOG_LEVEL_INFO, print_r(parse_url($_SERVER['REQUEST_URI']))); //для отладки
$get_url = parse_url($_SERVER['REQUEST_URI']);
switch ($get_url['path']) {
case '/old-url.html':
$new_url = 29; //поменять на ID страницы перенаправления
break;
case '/old-url-2.html':
$new_url = 17; //поменять на ID страницы перенаправления
break;
}
if ($new_url) {
$url = (isset($get_url['query'])) ? $modx->makeUrl($new_url, '', $get_url['query']) : $modx->makeUrl($new_url);
$modx->sendRedirect($url, $redir301mov);
}
break;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment