Скрываем внешние ссылки (Редирект)
Быть может кому то пригодится данный метод скрытия внешних ссылок.
Есть очень много методов позволяющих скрыть внешние ссылки, но зачастую они очень громоздкие и используют свою базу данных, либо MySQL, либо текстовую с массивом ссылок.
Я приведу пример скрытия ссылок не использующий какую либо базу данный, нам потребуется написать простенький код, который зашифрует внешнюю ссылку.
И так. Скажем у нас есть какая то CMS и нам нужно автоматом прогонять ссылки через функцию. Практически в каждой CMS есть bbcode или html который формирует шаблон ссылки, а именно:
Где $link — ссылка
Давайте теперь приступим к написанию функции, которая будет шифровать ссылку.
Думаю тут все понятно и проблем с разбром функции не должно возникнуть. Но все же немного поясню.
И так, как я писал уже выше о шаблоне ссылки, теперь ваш шаблон нужно будет немножко подправить, подключив функцию:
Увидим зашифрованную ссылку, в HTML она будет выглядеть так:
Теперь все внешние ссылки на нашем сайте будут зашифрованы, а добавив стручку в robots.txt они будут еще и закрыты для поисковых систем.
Пришло время строить редирект
И так для того чтобы пользователю кликнувшему на нашу ссылку можно было попасть на внешний сайт, нам нужно декодировать ссылку и переадресовать пользователя.
Создадим файл link.php со следующем кодом
Тут все просто, мы приняли закодированную ссылку, раскодировали ее, проверяли и отправили пользователя по скрытой ранее ссылке.
Есть очень много методов позволяющих скрыть внешние ссылки, но зачастую они очень громоздкие и используют свою базу данных, либо MySQL, либо текстовую с массивом ссылок.
Я приведу пример скрытия ссылок не использующий какую либо базу данный, нам потребуется написать простенький код, который зашифрует внешнюю ссылку.
И так. Скажем у нас есть какая то CMS и нам нужно автоматом прогонять ссылки через функцию. Практически в каждой CMS есть bbcode или html который формирует шаблон ссылки, а именно:
<a href="$link">$link</a>
Где $link — ссылка
Давайте теперь приступим к написанию функции, которая будет шифровать ссылку.
function enCodeUrl($link) {
// $link - наша ссылка которую необходимо обработать
$host = $_SERVER['SERVER_NAME'] ;
$domain = parse_url($link, PHP_URL_HOST);
// Проверим внешняя это ссылка или внутренняя
$host == $domain ? $url = $link : $url = 'http://' . $host . '/link.php?goto=' . base64_encode($link) ;
return $url ;
}
Думаю тут все понятно и проблем с разбром функции не должно возникнуть. Но все же немного поясню.
И так, как я писал уже выше о шаблоне ссылки, теперь ваш шаблон нужно будет немножко подправить, подключив функцию:
<?php
$link = 'site.ru' ;
echo $urlTemplates = '<a href=\'' . enCodeUrl($link) . '\'>'. $link .'</a>' ;
?>
Увидим зашифрованную ссылку, в HTML она будет выглядеть так:
<a href='http://site.ru/link.php?goto=c2l0ZS5ydQ=='>site.ru</a>
Теперь все внешние ссылки на нашем сайте будут зашифрованы, а добавив стручку в robots.txt они будут еще и закрыты для поисковых систем.
Пришло время строить редирект
И так для того чтобы пользователю кликнувшему на нашу ссылку можно было попасть на внешний сайт, нам нужно декодировать ссылку и переадресовать пользователя.
Создадим файл link.php со следующем кодом
<?php
//принимаем ссылку
$link = $_GET['goto'] ;
// Декодируем полученную ссылку
$link = base64_decode($link) ;
// Подготовка ссылки
if ($link == "") {
$link = $_SERVER["HTTP_REFERER"];
} elseif (!preg_match("/^http\:\/\//", $link) && !preg_match("/^https\:\/\//", $link) && !preg_match("/^ftp\:\/\//", $link)) {
$link = "http://" . $link;
}
// Отправляем пользователя по ссылку
header("Location: $link");
?>
Тут все просто, мы приняли закодированную ссылку, раскодировали ее, проверяли и отправили пользователя по скрытой ранее ссылке.
0 комментариев