|
Как уменьшить число внешних ссылок Сокращение числа внешних ссылок - задача не только экономическая (продажа ссылок на Вашем сайте), но и задача безопасности данных. Дело в том, что, переходя по ссылке с Вашего сайта, браузер передает заголовок HTTP_REFERER, который содержит URL адресующей страницы. А в этом URL могут содержаться идентификаторы пользователя или другие данные, раскрывать которые по возможности не хотелось бы. Некоторые неблагонадежные сайты могут попытаться использовать XSS-атаки, будучи открыты с Вашего сайта.

Пример. Скрипт text_src.php имеет ссылку на скрипт text_dst.php. Приведен вывод функции phpinfo() для скрипта text_dst.php, открытого по ссылке с text_src.php
Для вебмастеров, зарабатывающих на продаже рекламных ссылок, большая проблема - число внешних ссылок непосредственно в публикациях сайта. Не хочется лишать посетителя удобства перехода по активным ссылкам. Эта проблема легко решается приведенным в этой статье способом подмены ссылок.
В то же время, было бы тяжко выполнять замену на переадресующие ссылки вручную, ведь пришлось бы постоянно держать их формат в голове. Если же материалы копируются из других документов или поступают от пользователя с уже установленными ссылками, то и вовсе такой способ выглядит по-неандертальски. Поставим задачу автоматической замены имеющихся в коде прямых ссылок на наши собственные, обеспечивающие переадресацию на посторонний сайт.
Итак, для того, чтобы обеспечить автозамену ссылок, нам потребуется:
- в коде отображения текста нужно заменить внешние ссылки на внутренние, на наш скрипт, который будет переадресовывать по внешним;
- в зависимости от того, используются ли на сайте "красивые адреса", возможно, потребуется добавить шаблон переадресованных страниц;
- написать скрипт, непосредственно выполняющий переадресацию.
Как Вы заметили, есть радостная новость: не требуется переработки системы администрирования, да и движок сайта нужно будет обновить лишь в месте вывода кода страницы. Но есть и еще одна хорошая новость: процедура преобразования URL ссылки выполняется в одну строчку кода:
$text=preg_replace("!<a[^>]*shref="?http://([^>"#s]+)"?[^>]*>!is","<a href="/loc/$1" target="_blank">",$text);
Таким образом, если в коде встретится фрагмент
<a href="http://saytostroy.ru">сайтострой</a>
то он будет заменен на:
<a href="/loc/saytostroy.ru" target="_blank">сайтострой</a>

Переадресация на другой сайт по внутренней ссылки на уровне протокола HTTP
Теперь нужно обеспечить обработку ссылок вида "/loc/url". Для этого пропишем его в файле .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 { } ?>
|
|
|