Пришлось делать ЧПУ на уже работающем сайте.
И выявилась проблема: Redirector не обрабатывал правила типа: index.php?id=10 → prajs-list (это пример).
Добавив плагин, код которого ниже, я заставил работать Redirector, а так же закрыл дубль — index.php.
Для того, чтобы вопрос с дублями закрыть, создаем плагин со следующим содержанием:
<?php
switch ($modx->event->name) {
case 'OnHandleRequest':
if (strpos($_SERVER['REQUEST_URI'],'index.php') !== false && $modx->context->get('key') != 'mgr') {
if (!empty($_GET['id'])) {
$id = (int)$_GET['id'];
if (!$modx->getCount('modResource', array('id' => $id, 'published' => 1, 'deleted' => 0))) {
$modx->sendErrorPage();
}
} else {
$id = $modx->getOption('site_start', null, 1);
}
$modx->sendRedirect($modx->makeUrl($id),array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
break;
}
Плагин должен отслеживать событие OnHandleRequest (идем на страницу нашего плагина, во вкладку «Системные события», и ставим на событии галочку).
После создания этого плагина, Redirector заработал как надо.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()