Как «спрятать» внешние ссылки. Небольшой PHP скрипт

Владимир | | htaccess, PHP, SEO.

Маскировка ссылок

Эта статья об одном из довольно распространенных способов маскировки внешних ссылок (по-английски – link cloaking).

Работает link cloaking следующим образом. Просматривая страницу, посетитель видит обычную внутреннюю ссылку. Но, после перехода по ней – попадает на другой сайт.

На сегодняшний день существует несколько способов создания таких ссылок. Но мы рассмотрим один из самых удачных (с моей точки зрения), не требующий поддержки со стороны браузера.

Идея заключается в использовании редиректа и реализуется в два этапа:

1) в корне сайта (папка, на которую указывает DOCUMENT_ROOT) создаем папку с именем pages.

2) в этой папке размещаем три файла:

linkslist.php – в нем будет массив с внешними ссылками;
redirect.php – анализирует ссылку по которой был выполнен переход и отправляет посетителя на внешний ресурс;
.htaccess – передает все запросы скрипту redirect.php.

Принцип работы

На страницах сайта вы размещаете ссылки вида: http://site_name/pages/get/вторая_часть_адреса, где вторая_часть_адреса – может быть чем угодно, например, mypage.html или page1 и т.д. Тут все зависит от вашей фантазии.

Преобразование адреса происходит следующим образом. При любом переходе по ссылке вида http://site_name/pages/get/......... к ней будут применены правила из .htaccess.

Примечание. На сервере должен быть установлен и запущен apache mod_rewrite.

С помощью правил в этом файле, мы заменяем в адресе get на redirect.php. Т.е. получится:
http://site_name/pages/redirect.php/вторая_часть_адреса

Скрипт redirect.php по второй части адрса выбирает внешнюю ссылку и отправляет браузеру redirect.

Описанный порядок преобразования адресов изображен на диаграмме.

Маскировка ссылок

Теперь рассмотрим сами скрипты

linkslist.php

<?php
$linksList = array(
    'page1.html' => 'http://www.google.com',
    'page2.html' => 'http://www.php.net'
);
?>

Здесь объявлен обычный массив. Ключом элемента является вторая часть адреса внутренней ссылки, а значением – адрес внешнего ресурса.

redirect.php

<?php
require_once('linkslist.php');

$request = $_SERVER['REQUEST_URI'];
$dest = explode('/', $request);
$newUrlKey = end($dest);

if (array_key_exists($newUrlKey, $linksList)) {
    header('Location:'.$linksList[$newUrlKey]);
}
else {
    header('Location:https://www.simplecoding.org');
}
?>

Здесь мы подключаем файл с массивом ссылок (строка 2). После этого выделяем из адреса вторую часть (строки 5, 6) и формируем заголовок с редиректом (строки 8-13).

.htaccess

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^get/(.+) /pages/redirect.php/$1 [L]
</IfModule>

В этом файле мы создали правило, которое меняет get на redirect.php в адресе.

Заключение

На сегодняшний день существует несколько готовых решений, которые выполняют эти же функции (например, плагины для WordPress вроде Hidden Affiliate Links).

Самое главное, перед тем как использовать описанный в этой статье метод, вы должны четко понимать, что вам даст маскировка ссылок.

Ведь, по большому, счету маскировка ссылок очень напоминает обман посетителя. Или у вас другое мнение?