OnHandleRequest (проблема с запросом)

Доброго времени всем!
Подскажите пожалуйста, кто сталкивался.
Столкнулся с нестандартной ситуацией во время переноса сайта с кастомного движка (в дальнейшем донор) на Modx.
На доноре неправильная структура ссылки языковых версий. Во время формирования ссылки, язык добавляется в конец ссылки (пример: ссылка-на-сайт.ru/алиас/ru). Сайт уже устоялся и заказчик категорично пока что не хочет менять формирование ссылки, т.к. это повлияет на СЕО.
Еще небольшая особенность, если язык в запросе отсутствует, нужно 301ым перенаправлять его на русскую версию.

Вроде бы с задачей справился с плагином OnHandleRequest путем:
$alias = $modx->getOption('request_param_alias', null, 'alias', true);
$request = &$_REQUEST[$alias];
$languages = array("/ru$/","/en$/","/de$/","/fr$/","/es$/","/it$/","/tr$/");
$request = preg_replace($languages, "", $request);
+ редирект 301

И все работает за исключением главной страницы.
На главной, во время очистки индификатора(метод _cleanResourceIdentifier) нужной страницы происходит:
if ($this->modx->getOption('base_url', null, MODX_BASE_URL) !== strtok($_SERVER["REQUEST_URI"],'?')) {
                $this->modx->sendRedirect($this->modx->getOption('site_url', null, MODX_SITE_URL), array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }
Поэтому даже вырезая из запроса язык, система определяет эту страницу главной и переадресовывет на саму себя с 301 редиректом.
Изначально думал, что вина в этом параметра friendly_urls_strict (мол, если в адресе index.php или еще что, то 301 редирект на каноничный адрес).
Проблему конечно решил:
/*            if ($this->modx->getOption('base_url', null, MODX_BASE_URL) !== strtok($_SERVER["REQUEST_URI"],'?')) {
                $this->modx->sendRedirect($this->modx->getOption('site_url', null, MODX_SITE_URL), array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }*/
            if (strlen(substr($_SERVER["REQUEST_URI"],1)) == '') {
                $defaultUrl = $this->modx->getOption('site_url', null, MODX_SITE_URL) . 'ru';
                $this->modx->sendRedirect($defaultUrl, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }
Но править ядро MODX считаю неправильно, да и слетит в случае обновления.
Поэтому очень прошу помочь советом, как сделать тоже самое, незатронув ядро Modx.

Буду рад любому совету, благодарю за внимание.
Александр
20 октября 2016, 03:42
modx.pro
1 585
0

Комментарии: 1

Александр
21 октября 2016, 16:04
0
Жаль, что никто не знает… =(
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1