Публикации

Пользователь:

Пароль:


Запомнить

Регистрация
Забыли пароль?



Пользователей: 3915
Новичок: Александрович
Поддержи проект
Поддержите проект Webmoney
R197422573540
E197270426287
Z701768662172
Сказали «Спасибо»

Навигация

Создаем страницу переадресации - Redirect


Автор: Кадников Александр
 8.6 - 11 голосов -

Создаем страницу переадресации - Redirect

Сегодня я расскажу вам о том, как сделать страницу переадресации (redirect) на своём сайте. Что такое redirect и зачем он нужен?

Redirect - это страница, специально созданная для получения высокого рейтинга веб-ресурса в поисковых системах, которая скрывает все внешние ссылки с вашего сайта на сторонние, что благоприятно сказывается на выдаче вашего ресурса в поисковых системах. Ибо поисковики за обильное наличие внешних ссылок на вашем сайте ведущих на другие ресурсы могут даже забанить ваш сайт в выдаче, посчитав его спам-помойкой. Общий смысл для чего нужен редирект понятен.

Страница перенаправления будет использовать механизм кодирования base64, который будет скрывать адрес внешней ссылки, при нажатии на которую откроется страница перенаправления с предупреждением о том, что вы собираетесь покинуть сайт и перейти на внешний ресурс. Вы сможете так же настроить время ожидания в секундах до появления открытой ссылки перехода, либо убрать ожидание вообще.

Итак приступим...

Шаг первый

Создадим в корне сайта папку custom, если еще не создана. В папке custom создадим файл с названием redirect.php со следующим содержимым:
  1. <?php
  2.         header('Content-type: text/html; charset=utf-8');
  3.         if(isset($_GET['a'])){
  4.                 $url = $_GET['a'];
  5.         }else{
  6.                 $url = base64_decode($_SERVER['QUERY_STRING']);
  7.         }
  8.        
  9.         if(preg_match("#^(http|https)://(www.you_domain|you_domain).ru#i",$url)){
  10.                 header('Location: '.$url);
  11.                 exit;
  12.         }
  13.  
  14. ?>
  15. <html>
  16.         <head>
  17.                 <meta http-equiv='content-type' content='text/html; charset=utf-8' />
  18.                 <style type="text/css">
  19.                         .msg{
  20.                                 position: absolute;
  21.                                 top: 30%;
  22.                                 left: 45%;
  23.                                 margin-left: -300px;
  24.                                 border: 2px solid #009bdb;
  25.                                 border-radius: 10px;
  26.                                 padding: 15px;
  27.                                 width: 640px;
  28.                 height: 180px;
  29.                                 text-align: center;
  30.                                 font: Tahoma;
  31.                         }
  32.                         .warn{
  33.                                 font-size: 14px;
  34.                                 background-color: #afe5fc;
  35.                                 border-radius: 8px;
  36.                                 padding: 5px;
  37.                                 font: Tahoma;
  38.                         }
  39.                         .go{
  40.                                 color: #505050;
  41.                                 padding: 5px;
  42.                                 font: Tahoma;
  43.                         }
  44.                 </style>
  45.                 <title>Переход по внешней ссылке</title>
  46.                 <script type="text/javascript">
  47.                         var limit = 2; // Время ожидания до появления ссылки в секундах
  48.                         function processTimer(){
  49.                                 if (limit > 0) {
  50.                                         setTimeout("processTimer()", 1000);
  51.                                         limit--;
  52.                                         document.getElementById("link" ).innerHTML = "Для того, чтобы перейти на этот сайт, подождите "+limit+" секунд";
  53.                                 } else {
  54.                                         document.getElementById("link" ).innerHTML = "Для того, чтобы перейти на этот сайт, нажмите на ссылку ниже:<br /><a href='<? echo htmlspecialchars($url, ENT_QUOTES); ?>'><? echo htmlspecialchars($url, ENT_QUOTES); ?></a>";
  55.                                 }
  56.                         }
  57.                         window.onload = processTimer();
  58.                 </script>
  59.         </head>
  60.         <body>
  61.                 <div class="msg">
  62.                         <?php
  63.                         if(!preg_match("#^(http|https|ftp)://#",$url)){
  64.                                 echo '<h4>Некорректно указана ссылка!</h4>';
  65.                         }else{
  66.                                 echo '
  67.                                 <p><h4>Вы покидаете сайт НАЗВАНИЕ ВАШЕГО САЙТА и переходите по внешней ссылке.</h4></p>
  68.                                 <div class="warn">Данный сайт может содержать вирусы и различные вредоносные программы.<br />
  69.                                 Администрация сайта you_domain не несёт ответственности за контент данного сайта.<br />
  70.                                 Кроме того мы рекомендуем не указывать ваши данные, имеющие отношение к НАЗВАНИЕ ВАШЕГО САЙТА<br />
  71.                                 Такие как, имя пользователя, пароль и.т.п. на сторонних сайтах.</div>
  72.                                 <div class="go" id="link">Для того, чтобы перейти на этот сайт, подождите 1 секунд</div>
  73.                                 <div class="go">Для того, чтобы вернуться на сайт НАЗВАНИЕ ВАШЕГО САЙТА, нажмите <a href="http:// www.you_domain.ru" onclick="history.back(); ">назад</a>.</div>
  74.                                 ';
  75.                         }
  76.  
  77.                         ?>
  78.                 </div>
  79.         </body>
  80. </html>
Сохраняем файл. Первый шаг пройден.

Шаг второй

Находим файл link.bb, находящийся по адресу e107_files/bbcode/link.bb либо, если версия системы без префиксов files/bbcode/link.bb, открываем файл и находим в нем следующий код:
  1. $insert = ($pref['links_new_window'] && strpos($link,"{e_")===FALSE && substr($link,0,1) != "#" && substr($link,0,1) != "/" && strpos($extras,"rel=internal")===FALSE) ? "rel='external' " : "";
Заменяем этот код на нижеследующий:
  1. $insert = ($pref['links_new_window'] && strpos($link,"{e_")===FALSE && substr($link,0,1) != "#" && substr($link,0,1) != "/" && strpos($extras,"rel=internal")===FALSE) ? "rel='external' " : "";
Сделано это для того, чтобы при нажатии на ссылку, страница открывалась не в этом же окне, а в новой вкладке.

Далее в этом же файле находим следующую часть кода, обычно находится в самом конце файла:
  1. if (strtolower(substr($link,0,11)) == 'javascript:') return '';
  2.         return "<a class='bbcode' href='".$tp -> toAttribute($link)."' ".$insert.">".$code_text."</a>";
и заменяем этот код на нижеследующий:
  1. if (strtolower(substr($link,0,11)) == 'javascript:') return '';
  2.         return "<a class='bbcode' href='http:// www.you_domain.ru/custom/ redirect.php?".$tp -> toAttribute(base64_encode($link))."' ".$insert.">".$code_text."</a>";
Примечание: you_domain - заменяйте на название своего домена, это относится ко всем файлам, которые мы создаем или меняем.
Сохраняем файл. Еще один шаг завершен.

Шаг третий

Находим файл url.bb, находящийся по адресу e107_files/bbcode/url.bb либо, если версия системы без префиксов files/bbcode/url.bb, открываем файл и находим в нем следующий код:
  1. return '<a href="'.$tp->toAttribute($parm).'" class="bbcode"'.$external.'>'.$code_text.'</a>';
Заменяем этот код на нижеследующий:
  1. return '<a href="http:// www.you_domain.ru/custom/ redirect.php?'.base64_encode($tp->toAttribute($parm)).'" class="bbcode"'.$external.'>'.$code_text.'</a>';
Далее в этом же файле находим следующую часть кода, обычно находится в самом конце файла:
  1. return '<a href="'.$tp->toAttribute($code_text).'" class="bbcode"'.$external.'>'.$code_text.'</a>';
и заменяем этот код на нижеследующий:
  1. return '<a href="http:// www.you_domain.ru/custom/ redirect.php?'.base64_encode($tp->toAttribute($code_text)).'" class="bbcode"'.$external.'>'.$code_text.'</a>';
Сохраняем файл. Очередной шаг завершен.

Шаг четвертый

Если на вашем сайте в Админпанели включено:
– Цитата: 
Сделать URL'ы или e-mail адреса доступными:
Если отмечено, то добавляемые URL'ы или e-mail адреса будут автоматически конвертироваться в гиперссылки


Тогда нужно подправить еще один файл, чем мы сейчас и будем заниматься.

Находим файл e_parse_class.php, который находится по адресу e107_handlers/ e_parse_class.php либо, если версия системы без префиксов handlers/e_parse_class.php, открываем файл и находим в нем следующий код:
  1. //                        $text = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<,]*)#is", "\\1<a href=\"\\2\" {$_ext}>".$pref['link_text'] ."</a>", $text);
  2.               $text = preg_replace("#(^|[\s])([\w]+?://(?:[\w-%]+?)(? :\.[\w-%]+?)+.*?)(?=$|[\s()[\]<]|\.\s|\.$|,\s|,$)#is", "\\1<a href=\"\\2\" {$_ext}>".$pref['link_text']."</a>", $text);
  3. //                        $text = preg_replace("#(^|[\n \]])((www|ftp)\.[\w+-]+?\.[\w+\-.]*(?(? =/)(/.+?(?=\s|,\s))|(?=\W)))#is", "\\1<a href=\"http://\\2\" {$_ext}>".$pref['link_text'] ."</a>", $text);
  4.                           $text = preg_replace("#(^|[\s])((?:www|ftp)(?:\.[\w-%]+?){2}.*?)(?=$|[\s()[\]<]|\.\s|\.$|,\s|,$)#is", "\\1<a href=\"http://\\2\" {$_ext}>".$pref['link_text']."</a>", $text);
Заменяем этот код на нижеследующий:
  1. //                        $text = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<,]*)#is", "\\1<a href=\"\\2\" {$_ext}>".$pref['link_text'] ."</a>", $text);
  2.               $text = preg_replace("#(^|[\s])([\w]+?://(?:[\w-%]+?)(? :\.[\w-%]+?)+.*?)(?=$|[\s()[\]<]|\.\s|\.$|,\s|,$)#is", "\\1[link=\\2]".$pref['link_text']."[/link]", $text);
  3. //                        $text = preg_replace("#(^|[\n \]])((www|ftp)\.[\w+-]+?\.[\w+\-.]*(?(? =/)(/.+?(?=\s|,\s))|(?=\W)))#is", "\\1<a href=\"http://\\2\" {$_ext}>".$pref['link_text'] ."</a>", $text);
  4.                           $text = preg_replace("#(^|[\s])((?:www|ftp)(?:\.[\w-%]+?){2}.*?)(?=$|[\s()[\]<]|\.\s|\.$|,\s|,$)#is", "\\1[link=http://\\2]".$pref['link_text']."[/link]", $text);
Сохраняем файл. Последний шаг завершен.

Теперь на вашем сайте готова и будет работать страница перехода на внешние сайты. Все внешние ссылки будут открываться через страницу переадресации с предупреждением о том, что вы покидаете сайт и переходите на другой.

Данная переадресация не скрывает ссылки размещенные на странице ссылок (link page) и ссылки на домашние странички в подписи пользователей ибо, если скрыть все внешние ссылки, то это опять же плохо отразится на поисковых системах.

На этом урок закончен, до новых встреч.

Автор статьи: Кадников Александр
Отдельное спасибо Евланову Александру за помощь в создании урока.