MODX. Особенности редиректов

В CMS Modx Revolution все редиректы надо вставлять до строчки включающей дружественные URL

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Редирект со страниц без слеша на страницы со слешем

Через .htaccess

# Со страниц без слеша на страницы со слешем
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]

При этом для борьбы с множественным слешем можно создать плагин на событие OnWebPageInit с таким содержимым

<?php
switch ($modx->event->name)
{
case 'OnWebPageInit':
        if (stristr($_SERVER['REQUEST_URI'], '//'))
        {
                $g = preg_replace("|[//\s]+|is", "/", $_SERVER['REQUEST_URI']);
                $modx->sendRedirect($g);
        }
        break;
}

Через плагин на событие onHandleRequiest

 <?php
 if ($modx->context->key == 'mgr') {return;}
 if (substr($_SERVER['REQUEST_URI'], -1) == '/'
 && $_SERVER['REQUEST_URI'] != '/') {
 $url = $modx->getOption('site_url');
 $url .= substr($_SERVER['REQUEST_URI'], 0, -1);
 $modx->sendRedirect($url,array(
 'responseCode' => 'HTTP/1.1 301 Moved Permanently'));
 }