В который раз убеждаюсь, что полезно иногда читать статьи десятилетней давности, на самом деле можно чего полезно почерпнуть)

Итак, встала достаточно тривиальная задача — убрать с копирайта ссылку на свой сайт, т.к. внешние ссылки негативно сказываются на продвижении. Раз клиент просит — значит надо убрать, но убирать не хотелось) И тут я вспомнил что раньше же мы как-то это делали… Тут и родилось решение, которое позволит автоматом убирать ВСЕ внешние ссылки, оставляем при этом фактический переход)

Название плагина любое, события: OnWebPagePrerender, OnPageNotFound

Код плагина:

$page = 'exit.php'; //Уникальное название страницы, куда первоначально будем делать редирект 
$e =&$modx->Event;
if ($e->name=='OnWebPagePrerender')
{
$content = $modx->Event->params['documentOutput'];
$regV = '#(<a[a-z\-_\s\"\#\=]*)(href=")((https?|ftp)://)#i'; 
$replace = '$1$2'.$page.'?url=$3'; 
$clear =  preg_replace($regV,$replace,$content); 
$modx->Event->output($clear);
}
if ($e->name=='OnPageNotFound')
{
$q = $modx->db->escape($_REQUEST['q']);
if (isset($_GET['url']) && (!empty($_GET['url'])) && ($q==$page))
    {
        $url = $_GET['url'];
        if (!preg_match('#(https?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)) 
        {
            exit ("<p>Неверный формат запроса! Проверьте URL!</p>");
        }     
        header("Location:$url");
        exit();
	}
}


Ну и для поисковых систем запрещаем индексацию exit.php (если вы не меняли название)

Disallow: /exit.php