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 и Яндекс.
Если вы не знаете как предотвратить лишение водительских прав советуем обратиться за бесплатной консультация автоюриста.
Линзмастер — это интернет магазин контактных линз с доставкой по Киеву и Украине.
Я спользуюсь файликом go.php , вроде бы работает а большего и не над,. А вообще если надо спрятать рефералку то я прячу ее в сокращенную ссылку. Ту пока не кликнешь не узнаешь что она реферальная. а если кликнул то уже в печеньках будет рефка.
А редирект я стал использовать когда надо было внешки убрать. А то в том же GGL попадаются задания учитывающие nofollow, вот я и почикал все что во внешку уходило.
Я вообще не пользуюсь скрытием реферальных ссылок. Кто захочет, перейдет сознательно, зарегистрируется и будет зарабатывать. Кто не хочет — никакие ухищрения не помогут.
Тоже никогда не скрываю свои реферальные ссылки и даже наоборот обращаю внимание, что ссылки в посте реферальные и если посетителю пост оказался полезным, то буду благодарен, если он зарегистрируется по моей реф. ссылке.
А я вот по первой когда был новичком всегда обрезал реф ссылку, думал, что процент с меня снимают.. когда же понял что к чему стал даже если кто советует просить рефку, но те первые регистрации, в которых я работаю, пусть даже спустя год — полтора.. так и остались не под кем!
Поэтому смысл прятать рефку есть, или 1 прятать а вторую открыто рядом ставить с примечанием рефка :-)
Спасибо за советы, сегодня буду изучать.. обычно пользовался первым способом и даже не задумывался о недостатках!!
Я использовал метод go.php и у меня возникало куча непоняток с Яндексом, по этому я отказался от всяких редиректов и пользуюсь обычными, «природными» ссылками.
«В принципе, сложно сказать, если позитивный эффект от применения подобных хитростей»
Ашыпка детектед.
devoor, спасибо, исправил)
Mavick, да уж, не самый приятный глюк от Яши, нужно быть начеку.
denaie, сокращенные ссылки это с одной стороны выход, а с другой лично я отношусь к ним осторожно — в том же твиттере часто жду пока ссылка отобразится полностью, а то мало ли сайтов с вирусами и вообще гадости может скрываться за этим линком.
Кстати, также встречал мнение, что некоторые вебмастера принципиально не переходят по редиректным ссылкам:) Еще одна обратная сторона медали.
До этого не использовал, понравилась последняя схема, вроде простая и замарачиваться не нужно. Немного насторожила статья Mavick)
Tod, извиняюсь за занудство, но после «есть» должно быть «ли». )) Вот так:
«В принципе, сложно сказать, есть ЛИ позитивный эффект от применения подобных хитростей»
Тоже отказался от go.php как раз по причине выходок яши, но последний метод надо попробовать, авось прокатит и яша проглотит:)
Тоже никогда не понимал скрытия реферальной ссылки. Это ведь обман. ИМХО, действеннее написать, что ссылка реферальная и, мол, помогу чем смогу.
пы сы.
Все эти редиректы — опасное занятие. У них там не дурачки работают, а штат лучших программистов и ученых. Как только методика редиректа или какой нибудь другой не совсем здоровой фигни набирает популярность к ней применяют санкции.
В еденичных случаях корректировка алгоритмов нецелесообразна
Soeti, в данном случае, как я понимаю, «редирект ссылки» никакой «угрозы» для поисковиков не несет — то есть наличие подобных ссылок понятие естественное или нет? Те же «сокращалки ссылок» тоже ведь редирект, но из-за них ПС не должны гневаться.
Что либо «скрывать» — уже неестесственное явление.
Насчет сокращалок — всё это нужно эксперементально выяснять. К сожалению, публично таким занимается лишь devaka на своем блоге
задержка в php-скрипте через sleep() для редиректа не очень уместна, лучше в мета-тег в рефреше ее ставить — пусть ждет браузер, а сервер занимать смысла нет
по теме — реф. ссылки никак не скрываю, солидарен с BloggerMen
Я вообще рефки не скрываю. Раньше делал по тому первому варианту, что ты привел в посте, а потом вообще забил, и начал ставить рефки без всякого скрытия. Правда, никогда не подписываю, что ссылка реферальная. Люди ведь не глупые. Они же все прекрасно видят, зачем еще подписывать? А так особо толку с рефералов нет. Есть один сервис копирайтерский, где у меня почти 300 рефов, а доход с них за месяц даже доллара не будет. Лентяи все или хз. В общем, думать нужно, куда стоит привлекать, а куда нет. Например, в тот же GGL однозначно стоит
А я просто создаю html-файл, например blogun.htm, кидаю туда код в body
и готово.
Пользуюсь платной очень недорогой прогой. Имеется админка со статистикой. Можно создавать бесчисленное количество ссылок. Кто пойдет по ссылке-на странице есть демо-версия (можно пощелкать по кнопочкам-создать пробную ссылку). Прога работает на хостингах с РНР.
пользовался плагином (J)ExR, но теперь мне нужно закодировать внешние ссылки только с одной статистической страницы, а не с целого сайта
вот сижу ломаю голову как проще сделать
мне понравился последний способ, но к сожалению он у меня не заработал… видимо что то неправильно делаю с .htaccess, хотя все очень подробно разжевано.
Воспользовался способом от Shtirlitz, большое тебе спасибо!
при редиректе ссылок через htaccess всё отлично работает, но есть один минус, когда произойдет сам редирект в браузере останется адрес той страницы на которую был редирект
кто-то встречал как сделать подмену адреса в данном случае ?
то есть нужно с «site1.com/link1» сделать редирект на «site2.com/link2» но чтобы после перехода в адресной строке браузера остался адрес «site1.com/link1»
А можно как-то сделать чтобы ссылки из go.php открывались в новом окне а сама страница go.php оставалась открытой ?
Последний способ не работает
последний метод заработал, когда я исправил код .htaccess на:
RewriteEngine On
RewriteRule ^get/([^/]*)$ /pages/redirect.php/$1 [L]
и поместил .htaccess не в папку как написано в статье, а в корень сайта
ссылки получились такого вида:
http://сайт.ру/get/документ.html
не пойму а что нужно вписывать вместо адреса simplecoding.org в пункте:
2. redirect.php – php скрипт анализа ссылки и выполнения перерхода:
сделал все как написано но у меня вышла такая ошибка : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ‘)’ in /home/picasso/public_html/traff/linkslist.php on line 5
Александр, давно все это разбирался, конечно. Если правильно помню, то simplecoding.org это сайт куда переходит, если не найдено соответствие по ссылкам в linkslist.php.
По ошибке могу сказать, что там типа «неожиданное окончание строки — проверьте все ли скобки на месте. Вообще там в начале описания этого метода есть ссылка на автора скрипта — может лучше задать вопрос ему.
Ребята, здесь всё работает… И даже вот что скажу работает на все 100%..
Пользуюсь всеми этими методами .. А у кого не заработал последний метод, надо просто внимательнее смотреть код.. А на счёт скрывать ссылки или не скрывать, это уж кто как хочет..
И на данном сайте описывается не то надо ли или не надо ,а как.. И те кто зашёл и высказал своё мнение, что не скрывает ссылки .. Ну не скрывайте, дело ваше..
Использую go.php по Вашей рекомендации! Вот, только не пойму, почему при перебросе на файл go.php вместо русского текста выдает крокозябы. А в целом, все отлично работает. Спасибо! Теперь могу прятать реферальные ссылки от поисковиков за счет редиректа. Пример в НИКе))
Сергей, если появляются кракозябры, то значит проблема в кодировке. Возможно, файл редактировался в одной, а сайт в другой. Я советую править файлы в Notepad++ где указывать кодировку UTF-8 без BOM (конечно, если сам сайт тоже на UTF-8).
Все файлы на блоге у меня UTF-8 и go.php также UTF-8. Пробовал скачивать и в Notepad++ указывать кодировку UTF-8 без BOM, она стоит по умолчанию. Быть может, кто еще сталкивался с подобным? Проблема не несет огромной значимости, просто не пойму, почему так происходит.
Файлик go.php берет данные из URL и это является уязвимостью Open Redirect Используя Ваш домен можно перенаправлять Ваших посетителей на спам и фишинг сайты с вирусами и прочими хакерами… :)
Dmitry, а как его можно модифицировать дабы закрыть уязвимость?
Нужна дополнительная проверка откуда посетитель, если с внешних сайтов, то отказывать в доступе и редиректе. Можно вставить хеши на ссылки, и проверять их на странице с редиректом… Раньше была статья на OWASP.org, но сейчас куда-то потерялась… (
Последний способ не работает. Все сделал как описано в статье, в чем может быть проблема?
Roman, сложно сказать, должно работать. Попробуйте другой вариант.
Сделал по вашему мануалу — не получается. Попробовал засунуть ссылки в корневой htaccess , так сервер выдает ошибку 500. Возможно дело в том, что мне 700к ссылок нужно средиректить и быть может имеет значение формат внешних ссылок , который в моем случае https? Посоветуйте любой действенный вариант, чтобы массово спрятать от глаз посетителей и правильно средиректить 700к+ ссылок?
Roman, а если пробовать метод для 20-30 ссылок он работает? Возможно, все дело в количестве ссылок, т.к. 700к это не просто много это дохрена) Если прикинуть, то получается что для каждого пользователя, который запрашивает ссылку, обрабатывается этот файл с 700к записями и если таких пользователей 10, 20, то вполне вероятно сервер не может обработать скрипт. Если честно, не подскажу, что делать с такими объямами информации.
Так можно взять smart redirector — smartredirector.online-biznes.com — и не заморачиваться
Стас77, зачем платить 3100 за функцию, которая делается бесплатно:) Хотя, конечно, в сервисе есть нюансы и, возможно, при массовом использовании это будет иметь смысл. Тут уж каждый сам за себя решает, что ему более удобно.