PHP редирект внешних ссылок. Редирект с задержкой и таймером обратного отсчета. Скрытие реферальных ссылок
Опубликовано: 06.09.2018
В этой статье речь пойдет о создании скрипта php редиректа внешних ссылок. Будут рассмотрены примеры создания обычного php редиректа и редиректа с задержкой. При этом также будет рассмотрен процесс создания таймера обратного отсчета на JavaScript + JQuery и способ скрытия реферальных ссылок. После рассмотрения всех примеров будут предоставлены ссылки на скачку файлов скриптов, а также подробное руководство по установке и использованию скрипта редиректа. Ну и в заключении вы найдете код для добавления кнопок редиректа в редактор WordPress.
Идея создания данного скрипта возникла у меня после того, как я отключил плагин WpNoRef, который отвечал за индексацию внешних ссылок. О нем я уже упоминал в статье « Создание полнофункционального сайта (блога) на WordPress ». Суть работы плагина заключалась в помещении всех внешних ссылок в теги <noindex> и добавлении к ним атрибута rel=»nofollow».
Php редирект
Как вы уже поняли, после отключения плагина все внешние ссылки стали открытыми для индексации. В связи с этим я вручную заменил их и сделал через php редирект, который был реализован следующим образом.
Создавался специальный файл, например, redirect.php, который содержал следующий код.
Простой редирект на PHP
<?php $URL="http://google.com"; header("Location:$URL"); exit(); ?>
Затем вместо внешней ссылки указывалась ссылка на нужный файл с редиректом, который перенаправляет пользователей на нужную нам страницу. В данном случае это файл redirect.php, который перенаправляет пользователей на страницу http://google.com.
Как видите, данный способ не очень удобный и имеет один очень существенный минус – для каждой ссылки нужно создавать отдельный файл и копировать его на хостинг. Поработав так какое-то время, я пришел к выводу, что пора что-то менять и написал более гибкий вариант скрипта, который не требует создания отдельных файлов.
Суть его работы состоит в том, чтобы передавать в исполняющий файл необходимые параметры при помощи php метода GET . Далее скрипт обрабатывает полученные данные и перенаправляет пользователей на нужную страницу. Код в данном случае имеет следующий вид.
if (isset($_GET['url'])) {$url = $_GET['url']; } if (!isset($url)) { $url = 'http://dmitriydenisov.com'; } if (!preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)) { exit ("<p>Неверный формат запроса! Проверьте URL!"); } header("Location:$url"); exit();Теперь давайте коротко разберем вышеприведенный код редиректа.
Первым делом мы проверяем, существует ли переменная переданная методом GET. Если да, то преобразовываем ее в обычную переменную. Если же нет, то присваиваем переменной $url исходное значение.
Далее мы проверяем переменную $url. Если переменная прошла проверку, то перенаправляем пользователя на нужную страницу. Если же нет, то завершаем работу скрипта и выводим сообщение об ошибке.
Теперь давайте немного расширим возможности нашего скрипта php редиректа и добавим возможность скрытия реферальных ссылок и вывода всего списка ссылок на экран по запросу.
Скрытие реферальных ссылок мы произведем следующим образом.
Для начала создадим ассоциативный массив , который будет хранить в себе наши реферальные ссылки.
$partner = array ( '1' => 'http://key.net', 'http://google.com' => 'http://test.com', 'http://dmitriydenisov.com' => 'http://blog.com' );Как видно с примера выше, в качестве индекса мы указываем нашу реферальную ссылку, а в качестве значения ключ по которому будет вызываться эта ссылка. Кроме этого в самом начале создадим элемент, который будет использован в качестве ключа для просмотра через браузер всех элементов массива. Об этом мы поговорим чуть позже.
Итак, ассоциативный массив у нас создан. Теперь используем функцию php array_search() для поиска индекса элемента массива $partner по его значению, которое мы получим из адресной строки методом GET.
$key = array_search("$url", $partner);Далее создаем условие и проверяем результат выполнения функции. Если функция нашла нужный нам элемент, то делаем редирект на нужную нам страницу с партнерской ссылкой. Если же функция ничего не нашла, то делаем обычный редирект по ссылке полученной из адресной строки.
if ($key == true) { header("Location:$key"); } Else { header("Location:$url"); exit(); }Теперь добавим возможность просмотра всего списка партнерских ссылок по ключу. В качестве ключа вы можете использовать любой URL. В нашем случае это http://key.net, который находится в ассоциативном массиве под индексом «1».
Итак, для реализации возможности просмотра ссылок организуем цикл по значениям в массиве $partner при помощи конструкции php foreach.
if ($key == '1') { foreach($partner as $key=>$value) echo "$key - $value"."<br />"; exit(); }После завершения выполнения вывода значений массива не забываем завершить работу скрипта. Теперь при переходе по ссылке с ключом вместо редиректа нам выведется страница со значениями всех партнерских ссылок и их ключами.
Ну а теперь давайте соберем все эти куски кода вместе и рассмотрим код всего скрипта php редиректа целиком.
<?php if (isset($_GET['url'])) {$url = $_GET['url']; } if (!isset($url)) { $url = 'http://dmitriydenisov.com'; } if (!preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)) { exit ("<p>Неверный формат запроса! Проверьте URL!"); } $partner = array ( '1' => 'http://key.net', 'http://google.com' => 'http://test.com', 'http://ref-link.com' => 'http://site.com' ); $key = array_search("$url", $partner); if ($key == true) { if ($key == '1') { foreach($partner as $key=>$value) echo "$key - $value"."<br />"; exit(); } else { header("Location:$key"); } } else { header("Location:$url"); exit(); } ?>Итак, процесс создания скрипта php редиректа мы рассмотрели. Теперь сохраняем полученный код в файле, например, go.php и копируем его на хостинг к другим файлам сайта. Если вы скопируете данный файл в корень сайта, то для создания редиректа вам нужно будет использовать такую конструкцию.
http://mysite.com/go.php?url=http://site.comгде http://site.com – ссылка на страницу, на которую будет произведен редирект.
Также не забываем закрыть от индексации поисковыми системами файл редиректа go.php. Для этого добавляем в файл robots.txt, который находится в корне сайта, следующую строчку.
Либо же вы можете создать отдельную директорию для скриптов и поместить файл go.php туда, после чего закрыть директорию в robots.txt.
Где extension – папка со скриптами, которая расположена в корне сайта.
Теперь давайте перейдем к рассмотрению способа создания скрипта php редиректа с задержкой и таймером обратного отсчета на JavaScript + JQuery.
Скрипт php редиректа с задержкой и таймером обратного отсчета
Код скрипта редиректа с задержкой практически ничем не будет отличаться от предыдущего варианта за исключением нескольких строк кода. В данном случае будет заменен код
на
header("Refresh: 12; URL = $url");где Refresh: 12 отвечает за задержку на 12 секунд.
Кроме этого мы добавим таймер обратного отсчета на нашу страницу редиректа. Код таймера обратного отсчета будет иметь следующий вид.
<script type="text/javascript"> var timetogo = 10; var timer = window.setInterval(function() { var str = timetogo; $('#counter').text(str); if (timetogo <= 0) { $('#redirect').text('Переадресация...'); window.clearInterval(timer); } timetogo--; }, 1000); </script> <div style="float: left; display: inline; text-align: center; width: 100%;" id="redirect">Переход по внешней ссылке будет произведен через: <div id="counter">10</div></div>Где timetogo = 10 – начальное время отсчета.
Данный код очень простой и интуитивно понятен, поэтому я не буду его разбирать, а сразу перейду к полному коду скрипта php редиректа с целью уменьшения общего размера статьи.
Итак, полный код скрипта php редиректа с задержкой будет иметь следующий вид.
<?php if (isset($_GET['url'])) {$url = $_GET['url']; } if (!isset($url)) { $url = 'http://dmitriydenisov.com'; } if (!preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)) { exit ("<p>Неверный формат запроса! Проверьте URL!"); } $partner = array ( '1' => 'http://key.net', 'http://google.com' => 'http://test.com', 'http://ref-link.com' => 'http://site.com' ); $key = array_search("$url", $partner); if ($key == true) { if ($key == '1') { foreach($partner as $key=>$value) echo "$key - $value"."<br />"; exit(); } else { header("Refresh: 12; URL = $key"); } } else { header("Refresh: 12; URL = $url"); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Переход по внешней ссылке</title> <script type="text/javascript" src="jquery-1.5.1.min.js"></script> </head> <body> <script type="text/javascript"> var timetogo = 10; var timer = window.setInterval(function() { var str = timetogo; $('#counter').text(str); if (timetogo <= 0) { $('#redirect').text('Переадресация...'); window.clearInterval(timer); } timetogo--; }, 1000); </script> <div style="float: left; display: inline; text-align: center; width: 100%;" id="redirect">Переход по внешней ссылке будет произведен через: <div id="counter">10</div></div> </body> </html> <?php exit(); ?>Как видно с кода выше, для работы таймера обратного отсчета нам потребуется подключить к странице библиотеку JQuery. Для этого нам потребуется скачать соответствующий файл с сайта JQuery или же воспользоваться тем, что будет в архиве с исходниками, ссылку на скачку которых вы сможете найти в конце статьи.
Итак, процесс создания простого php редиректа и редиректа с задержкой и таймером обратного отсчета мы рассмотрели. Теперь давайте перейдем к заключительной части и рассмотрим код для добавления кнопок редиректа в редактор Wordrpess.
Добавление кнопок редиректа в редактор Wordrpess
Поскольку в предыдущей статье « Shortcode WordPress. Как добавить новые кнопки в редактор WordPress » мы уже рассматривали процесс добавления новых кнопок в редактор, то сейчас я приведу лишь сам код кнопок без инструкции по установке. Саму инструкцию вы сможете найти в соответствующей статье, ссылка на которую находится чуть выше.
Код для добавления кнопки редиректа в редактор WordPress выглядит следующим образом
edButtons[edButtons.length] = new edButton('ed_go' ,'Go.php' ,'http://dmitriydenisov.com/links/go.php?url=' ,'' ,'' ,-1 ); t.Buttons[t.Buttons.length] = new edButton(name+'_go','Go.php','http://dmitriydenisov.com/links/go.php?url=','','',-1);Как вы уже поняли, перед добавлением кода на свой сайт вам нужно будет изменить ссылку на файл go.php на свою. После этого добавляем код в файл quicktags.js и сохраняем результат, после чего можно приступить к использованию новой кнопки.
Использование кнопки очень простое. Для этого перейдите в редакторе в режим HTML, найдите внешнюю ссылку, после чего выделите ее и нажмите на кнопку в редакторе. В результате этого внешняя ссылка примет следующий вид.
http://dmitriydenisov.com/links/go.php?url=http://site.comгде http://dmitriydenisov.com/links/go.php — путь к файлу go.php.
На этом данная статья подошла к концу. Материал расписал достаточно подробно и у вас не должно возникнуть проблем с работой скрипта редиректа. Если же вдруг возникнут сложности или появятся вопросы, вы всегда сможете задать их в комментариях к статье.
И чуть не забыл. Скачать файлы скрипта php редиректа вы можете по следующей ссылке — скачать исходники скрипта .
На этом все. Удачи вам и успехов в построении сайтов.
Обнаружили ошибку? Выделите ее и нажмите Ctrl+Enter