Редирект или как закрыть внешние ссылки от индексации? Плагин Modx Evo.

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

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

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

Код плагина:

//<?php
$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

Следующая работа

Оставить комментарий