MODX. Редирект с адресов c указанием id на нормальные адреса страниц

Для запрета показа страниц с адресом типа site.ru/?id=2 можно использовать следующий плагин, срабатывающий на событие OnWebPageInit.

Плагин может редиректить страницы на их дружественные адреса, либо на 404 страницу.

<?php
if($modx->context->key == 'mgr') return;

// Проверка на случай обращения по id документа
if(preg_match('/^\/(([0-9]+)|\?id=([0-9]+))(\/?|\.(htm|html|php|txt|xml|\/))$/',$_SERVER['REQUEST_URI'],$match)){
    $id = ($match[2] ? $match[2] : $match[3]);
    
    // Если нужен редирект на 404
    //$modx->sendErrorPage();
    //exit;
    
    if($modx->getCount('modResource',$id) == 0) return;
    
    $url = $modx->makeUrl($id);
    
    // Перепроверка url во избежании зацикленности
    if($url != $_SERVER['REQUEST_URI']){
        $redir_url = $url;
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: {$redir_url}");
        exit();
    }
    
}

tnx

За плагин спасибо:

Илье Уткину