В целях поисковой оптимизации или для продажи ссылок через биржу бывает нужно убрать ссылки на посторонние сайты. Это можно достаточно легко сделать, установив переадресацию со своего сайта. Причём, это можно сделать в автоматическом режиме: включить в движок сайта функции замены при выводе HTML-кода ссылок на скрипт переадресации.
Если в переменной $text содержится HTML-код, функция автозамены будет следующей:
$text=preg_replace("!<a[^>]*shref="?http://([^>"#s]+)"?[^>]*>!is","<a href="/loc/$1" target="_blank">",$text);
Как видим, функция заменила URL на /loc/URL без "http://", чтобы не нарушать формат URL. Теперь нам нужно сделать обработку таких URL (начинающихся с /loc/). Для этого в случае веб-сервера Apache нужно добавить в файл .htaccess следующее:
RewriteEngine On
RewriteRule ^loc/.*$ /reloc.php
Теперь все подобные адреса будет обрабатывать наш скрипт reloc.php. Вот его код:
<?
$uri=urldecode($_SERVER["REQUEST_URI"]);
if(ereg("loc/(.+)",$uri,$regs))
{
$to=$regs[1];
header("Location: http://${to}");
}
else
{
// некорректная ссылка
}
?>
Скрипт перенаправит посетителя на новый адрес с кодом 302 HTTP. Посмотрим на примере:
Если Ваш движок не позволяет вторгаться в его внутренний мир, попробуйте воспользоваться функциями PHP ob_start() и ob_get_clean(). Первую нужно задать перед любым выводом, а вторую в конце. Получив буферизированные данные на вывод из ob_get_clean(), произвести замену и самостоятельно осуществить вывод.
Комментарии и вопросы
Статью никто не комментировал.
Задать вопрос или оставить комментарий