Внесены изменения - подробнее в конце статьи.

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

Можно было бы покопаться, поискать, где порылся, лучший друг человека, но не в рамках оговоренного бюджета. Так как, я бы потратил кучу времени на это дело. А, ведь вокруг столько интересного и нужного, что можно поделать и за что тебе дадут билеты банка России. В общем, не стал заморачиваться, как говориться чужой код потемки и лезть туда не смей, ну если нет должной мотивации.

Когда-то давным-давно, когда деревья были большими, я что-то подобное делал для какого-то клиента, но на MODX Evolution. А, я сущность хозяйственная и всё, так сказать в дом, точнее в папочки на свой накопитель. Специально использовал слово накопитель, ибо накопил там уже много разных ништяков, в виде файликов, в которых есть интересные решения той или иной задачи. Ну да, отвлёкся, наша цель редирект для MODX Revolution, спонсором данного предложения, стала местная банда SEOшников, в моём лице.

Редирект для MODX Revolution

Создаём плагин, как назвать, ну я назвал Redirect, кэп с Вами, други! Затем идем на вкладку "Системные события" и, о, как неожиданно да, ставим галку в событии OnPageNotFound. Не забываем сохранить.

Редиректы в MODX Revolution

Код самого плагина:

 
$mapChunk = $modx->getChunk('mapRedirect');
    $mapLines = explode("\n",$mapChunk);
    $mapArr = array();
    foreach($mapLines as $line) {
        list($link,$redirectId) = explode('||',$line);
        $mapArr[$link] = $redirectId;
    }
    $q = $_SERVER['REQUEST_URI'];
    if(isset($mapArr[$q])) {
        if(is_numeric($mapArr[$q])){
            $url = $modx->makeUrl($mapArr[$q]);
            $modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
        }else{
            $url = $mapArr[$q];
            $url = 'Location: '.$url;
            header($url,true, 301);
        }
    }

Как Вы, уже заметили в коде я вызваю чанк mapRedirect, кэп все еще с Вами, это именно карта редиректов, создаём его. И уже в нём заносим всё редиректы, которые нам нужны в следующем формате:

<урл с которого редирект>||<урл или ID ресурса куда должен вести редирект>

Редиректы в MODX Revolution

Да, да, я не ошибся урл или ID ресурса, видели is_numeric, вот тут и происходит магия. Определяет цифра или нет, ну и дальше уже генерирует урл через makeURL или просто использует то, что там есть.

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

Собственно, на этом всё. Успеха и отличного настроения, Вам!

П.С. Доработал, теперь работает не только с ID ресурса, но и URL (важно, урл куда идёт перенаправление, должен быть полным)