Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Главная » Web разработка » PHP редирект внешних ссылок и скрытие реферальных ссылок

PHP редирект внешних ссылок и скрытие реферальных ссылок

редирект ссылокДанный пост, как и многие другие в блоге, имеют свою «историю» или, если можно так выразиться, практическое происхождение. Когда я только начинал вести блог, то исследовал некоторые методы для скрытия реферальных ссылок дабы найти самый лучших из них. В принципе, сложно сказать, есть ли позитивный эффект от применения подобных хитростей — ведь, давно известно, что большая часть рефералов становятся пассивными пользователями, не принося никакой доход. И тогда получается, что с одной стороны, чем больше людей вам удастся привлечь в партнерскую программу, тем предположительно больше нормальных рефов может получится. Но с другой — где гарантия, что, например, 10 «случайных зевак», зарегистрировавшись лишь из интереса будут полезнее одного вебмастера, который сознательно перешел по вашей реферальной ссылке. Вопрос, как говорится, риторический.

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

До недавнего времени я использовал хитрость с подменой адреса при нажатии ссылки. Для этого в текст или шаблон блога добавлялся следующий код:

<a onclick="this.href='http://реальный адрес'" href="http://отображаемый адрес">текст ссылки</a>

В отображаемый адрес ссылки добавлялся обычный линк на главную страницу той или иной системы, а вот в качестве реального адреса выступала реферальная ссылка. Чтобы ее заметить нужно было смотреть HTML код страницы, но таким далеко не все будут заниматься, чаще всего вебмастера ограничиваются просмотром строки состояния браузера, которая в данном случае никак реф. ссылку не выдает. Тем не менее, метод оказался с одним большим недостатком. По словам некоторых специалистов при открытии ссылки через пункт контекстного меню «Открыть в новом окне» реферальная ссылка не сохранится. На 100% я лично в этом не уверен, пару моих тестов показали обратное, хотя в некоторых других случаях действительно ничего не происходило. В любом случае я решил поискать альтернативные методы скрытия реферальных ссылок.

PHP редирект внешних ссылок

В принципе сам по себе скрипт PHP редиректа внешних ссылок может использоваться для уменьшения числа внешних ссылок с того или иного сайта, что даст возможность больше заработать на нем в разных биржах. В общих чертах суть метода заключается в создании некоего файла go.php, в который добавляете код:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 Перенаправление
<?php
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
    sleep(0);
    //header("Location: $url");
    echo "<html><head><meta http-equiv=\"refresh\" content=\"0;url=$url\"></head></html>";
    exit();
}
?>

Здесь параметр sleep() может содержать задержку для редиректа.

Данный файл заливаете с корневой каталог сайта (если это wordpress блог, то туда, где находится файл wp-config.php). После этого прописываете нужные для php редиректа ссылки как:

http://ваш_сайт/go.php?url=http://куда_направляемся

Сами понимаете, что в таком случае ни о каком скрытии рефереальной ссылки речь не идет. Поэтому есть смысл немного изменить код в файле go.php на следующий:

<?php
header ("Location: http://реальная ссылка");
exit();
?>

В этом случае в коде вместо текста реальная ссылка ставим реферальную. Но тогда в одном PHP файле мы сможем задавать редирект только для одной реф. ссылки, поэтому придется создавать сразу несколько файлов под каждую биржу отдельно по типу gosape.php, goggl.php и т.п. При этом было бы неплохо закрыть индексацию файлов с PHP редиректом в robots.txt go.php:

User-agent: *
Disallow: /go.php
Disallow: /gosape.php
Disallow: /goggl.php

Либо проще будет закрыть индексацию целой директории, куда и добавить все php файлы.

Редирект ссылок через htaccess

Редирект для ссылок можно организовать не только через PHP файл, но и прописать соответствующую директиву Redirect в файле .htaccess. Его вы можете найти в корневой директории сайта. Кроме того на хостинге должен быть включен модуль mod_rewrite (в большинстве случае имеется). Синтаксис для команды следующий:

Redirect [status] URL-path URL

Здесь:

  • status : необязательное поле, определяет код возврата, допустимые значения:
    • permanent (301 — документ перемещен постоянно)
    • temp (302 — документ перемещен временно)
    • seeother (303 — смотрите другой)
    • gone (410 — убран)
  • URL-path : подставная ссылка.
  • URL : реальная ссылка

Таким образом для создания партнерской ссылки добавляем в .htaccess конструкцию по типу:

RewriteEngine on
Redirect /gosape http://www.sape.ru/12345.php

Таким образом клике по ссылке http://mysite.ru/gosape пользователь будет попадать на сайт sape с реферальной ссылкой. За метод спасибо автору этой статьи.

PHP редирект ссылок в два этапа

В одном из блогов нашел еще один весьма интересный метод как спрятать внешние ссылки. Для этого в корневом каталоге сайта создается некая папка, например, под названием pages, там размещаем 3 файла:

1.linkslist.php – хранит массив внешних (реферальных) ссылок для редиректа, его код:

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

2. redirect.php – 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:http://www.simplecoding.org');
      }
      ?>

3. Файл .htaccess – передает запросы скрипту redirect.php.

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

После этого на страницах вашего блога или сайта вы можете размещать ссылки вида http://site_name/pages/get/page1.html, где page1.html — определяется в файле linkslist.php и соответствует реальной ссылке, на которую будете перенаправлен пользователь. Весь процесс обработки ссылки автор метода уместил в такой схеме:

редирект внешних ссылок

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

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

А каким способом скрытия реферальных ссылок пользуетесь вы и почему?

P.S. Постовой. Компания WebPromo предоставляет поисковое продвижение сайта и его раскрутку в Google и Яндекс.
Если вы не знаете как предотвратить лишение водительских прав советуем обратиться за бесплатной консультация автоюриста.
Линзмастер — это интернет магазин контактных линз с доставкой по Киеву и Украине.

11.08.10

Категории: Web разработка.

Теги: , , , , , ,

40 Comments
  1. denaie

    Я спользуюсь файликом go.php , вроде бы работает а большего и не над,. А вообще если надо спрятать рефералку то я прячу ее в сокращенную ссылку. Ту пока не кликнешь не узнаешь что она реферальная. а если кликнул то уже в печеньках будет рефка.
    А редирект я стал использовать когда надо было внешки убрать. А то в том же GGL попадаются задания учитывающие nofollow, вот я и почикал все что во внешку уходило.

  2. BloggerMen

    Я вообще не пользуюсь скрытием реферальных ссылок. Кто захочет, перейдет сознательно, зарегистрируется и будет зарабатывать. Кто не хочет — никакие ухищрения не помогут.

  3. Grib

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

  4. Sagadoll.ru

    А я вот по первой когда был новичком всегда обрезал реф ссылку, думал, что процент с меня снимают.. когда же понял что к чему стал даже если кто советует просить рефку, но те первые регистрации, в которых я работаю, пусть даже спустя год — полтора.. так и остались не под кем!
    Поэтому смысл прятать рефку есть, или 1 прятать а вторую открыто рядом ставить с примечанием рефка :-)

  5. Zdeslove.ru

    Спасибо за советы, сегодня буду изучать.. обычно пользовался первым способом и даже не задумывался о недостатках!!

  6. Mavick

    Я использовал метод go.php и у меня возникало куча непоняток с Яндексом, по этому я отказался от всяких редиректов и пользуюсь обычными, «природными» ссылками.

  7. devoor

    «В принципе, сложно сказать, если позитивный эффект от применения подобных хитростей»

    Ашыпка детектед.

  8. Tod

    devoor, спасибо, исправил)
    Mavick, да уж, не самый приятный глюк от Яши, нужно быть начеку.
    denaie, сокращенные ссылки это с одной стороны выход, а с другой лично я отношусь к ним осторожно — в том же твиттере часто жду пока ссылка отобразится полностью, а то мало ли сайтов с вирусами и вообще гадости может скрываться за этим линком.

    Кстати, также встречал мнение, что некоторые вебмастера принципиально не переходят по редиректным ссылкам:) Еще одна обратная сторона медали.

  9. Den

    До этого не использовал, понравилась последняя схема, вроде простая и замарачиваться не нужно. Немного насторожила статья Mavick)

  10. devoor

    Tod, извиняюсь за занудство, но после «есть» должно быть «ли». )) Вот так:

    «В принципе, сложно сказать, есть ЛИ позитивный эффект от применения подобных хитростей»

  11. Dem

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

  12. Soeti

    Тоже никогда не понимал скрытия реферальной ссылки. Это ведь обман. ИМХО, действеннее написать, что ссылка реферальная и, мол, помогу чем смогу.
    пы сы.
    Все эти редиректы — опасное занятие. У них там не дурачки работают, а штат лучших программистов и ученых. Как только методика редиректа или какой нибудь другой не совсем здоровой фигни набирает популярность к ней применяют санкции.
    В еденичных случаях корректировка алгоритмов нецелесообразна

  13. Tod

    Soeti, в данном случае, как я понимаю, «редирект ссылки» никакой «угрозы» для поисковиков не несет — то есть наличие подобных ссылок понятие естественное или нет? Те же «сокращалки ссылок» тоже ведь редирект, но из-за них ПС не должны гневаться.

  14. Soeti

    Что либо «скрывать» — уже неестесственное явление.
    Насчет сокращалок — всё это нужно эксперементально выяснять. К сожалению, публично таким занимается лишь devaka на своем блоге

  15. shr

    задержка в php-скрипте через sleep() для редиректа не очень уместна, лучше в мета-тег в рефреше ее ставить — пусть ждет браузер, а сервер занимать смысла нет

    по теме — реф. ссылки никак не скрываю, солидарен с BloggerMen

  16. Max1mus

    Я вообще рефки не скрываю. Раньше делал по тому первому варианту, что ты привел в посте, а потом вообще забил, и начал ставить рефки без всякого скрытия. Правда, никогда не подписываю, что ссылка реферальная. Люди ведь не глупые. Они же все прекрасно видят, зачем еще подписывать? А так особо толку с рефералов нет. Есть один сервис копирайтерский, где у меня почти 300 рефов, а доход с них за месяц даже доллара не будет. Лентяи все или хз. В общем, думать нужно, куда стоит привлекать, а куда нет. Например, в тот же GGL однозначно стоит

  17. Shtirlitz

    А я просто создаю html-файл, например blogun.htm, кидаю туда код в body

    <html>
    <head>
    <meta http-equiv="Refresh" content="1;URL=http://blogun.ru/icebergfgfjjf.html"/>
    </head>
    <body>
    <script language="javascript" type="text/javascript">
    document.location='http://blogun.ru/icebergfgfjjf.html';
    </script>
    </body>
    </html>

    и готово.

  18. alex

    Пользуюсь платной очень недорогой прогой. Имеется админка со статистикой. Можно создавать бесчисленное количество ссылок. Кто пойдет по ссылке-на странице есть демо-версия (можно пощелкать по кнопочкам-создать пробную ссылку). Прога работает на хостингах с РНР.

  19. darmoid

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

  20. Андрей

    мне понравился последний способ, но к сожалению он у меня не заработал… видимо что то неправильно делаю с .htaccess, хотя все очень подробно разжевано.

    Воспользовался способом от Shtirlitz, большое тебе спасибо!

  21. Игорь

    при редиректе ссылок через htaccess всё отлично работает, но есть один минус, когда произойдет сам редирект в браузере останется адрес той страницы на которую был редирект

    кто-то встречал как сделать подмену адреса в данном случае ?

    то есть нужно с «site1.com/link1» сделать редирект на «site2.com/link2» но чтобы после перехода в адресной строке браузера остался адрес «site1.com/link1»

  22. Владик

    А можно как-то сделать чтобы ссылки из go.php открывались в новом окне а сама страница go.php оставалась открытой ?

  23. Сергей

    Последний способ не работает

  24. Сергей

    последний метод заработал, когда я исправил код .htaccess на:
    RewriteEngine On
    RewriteRule ^get/([^/]*)$ /pages/redirect.php/$1 [L]
    и поместил .htaccess не в папку как написано в статье, а в корень сайта
    ссылки получились такого вида:
    http://сайт.ру/get/документ.html

  25. Александр

    не пойму а что нужно вписывать вместо адреса simplecoding.org в пункте:

    2. redirect.php – php скрипт анализа ссылки и выполнения перерхода:

  26. Александр

    сделал все как написано но у меня вышла такая ошибка : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ‘)’ in /home/picasso/public_html/traff/linkslist.php on line 5

  27. Tod

    Александр, давно все это разбирался, конечно. Если правильно помню, то simplecoding.org это сайт куда переходит, если не найдено соответствие по ссылкам в linkslist.php.
    По ошибке могу сказать, что там типа «неожиданное окончание строки — проверьте все ли скобки на месте. Вообще там в начале описания этого метода есть ссылка на автора скрипта — может лучше задать вопрос ему.

  28. Колян

    Ребята, здесь всё работает… И даже вот что скажу работает на все 100%..
    Пользуюсь всеми этими методами .. А у кого не заработал последний метод, надо просто внимательнее смотреть код.. А на счёт скрывать ссылки или не скрывать, это уж кто как хочет..
    И на данном сайте описывается не то надо ли или не надо ,а как.. И те кто зашёл и высказал своё мнение, что не скрывает ссылки .. Ну не скрывайте, дело ваше..

  29. Сергей

    Использую go.php по Вашей рекомендации! Вот, только не пойму, почему при перебросе на файл go.php вместо русского текста выдает крокозябы. А в целом, все отлично работает. Спасибо! Теперь могу прятать реферальные ссылки от поисковиков за счет редиректа. Пример в НИКе))

  30. Tod

    Сергей, если появляются кракозябры, то значит проблема в кодировке. Возможно, файл редактировался в одной, а сайт в другой. Я советую править файлы в Notepad++ где указывать кодировку UTF-8 без BOM (конечно, если сам сайт тоже на UTF-8).

  31. Сергей

    Все файлы на блоге у меня UTF-8 и go.php также UTF-8. Пробовал скачивать и в Notepad++ указывать кодировку UTF-8 без BOM, она стоит по умолчанию. Быть может, кто еще сталкивался с подобным? Проблема не несет огромной значимости, просто не пойму, почему так происходит.

  32. Dmitry

    Файлик go.php берет данные из URL и это является уязвимостью Open Redirect Используя Ваш домен можно перенаправлять Ваших посетителей на спам и фишинг сайты с вирусами и прочими хакерами… :)

  33. Tod

    Dmitry, а как его можно модифицировать дабы закрыть уязвимость?

  34. Dmitry

    Нужна дополнительная проверка откуда посетитель, если с внешних сайтов, то отказывать в доступе и редиректе. Можно вставить хеши на ссылки, и проверять их на странице с редиректом… Раньше была статья на OWASP.org, но сейчас куда-то потерялась… (

  35. Roman

    Последний способ не работает. Все сделал как описано в статье, в чем может быть проблема?

  36. Tod

    Roman, сложно сказать, должно работать. Попробуйте другой вариант.

  37. Roman

    Сделал по вашему мануалу — не получается. Попробовал засунуть ссылки в корневой htaccess , так сервер выдает ошибку 500. Возможно дело в том, что мне 700к ссылок нужно средиректить и быть может имеет значение формат внешних ссылок , который в моем случае https? Посоветуйте любой действенный вариант, чтобы массово спрятать от глаз посетителей и правильно средиректить 700к+ ссылок?

  38. Tod

    Roman, а если пробовать метод для 20-30 ссылок он работает? Возможно, все дело в количестве ссылок, т.к. 700к это не просто много это дохрена) Если прикинуть, то получается что для каждого пользователя, который запрашивает ссылку, обрабатывается этот файл с 700к записями и если таких пользователей 10, 20, то вполне вероятно сервер не может обработать скрипт. Если честно, не подскажу, что делать с такими объямами информации.

  39. стас77

    Так можно взять smart redirector — smartredirector.online-biznes.com — и не заморачиваться

  40. Tod

    Стас77, зачем платить 3100 за функцию, которая делается бесплатно:) Хотя, конечно, в сервисе есть нюансы и, возможно, при массовом использовании это будет иметь смысл. Тут уж каждый сам за себя решает, что ему более удобно.

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.