Многие вебмастера хорошо знают модуль noindex_external_links, который позволяет спрятать внешние ссылки. Лично у меня модуль отказался нормально работать, так как на сайте ссылки добавлялись в различных вариациях - где-то использовался BBcode, где-то html, где-то стоял атрибут rel nofollow.
После небольшого апгрейда, модуль прекрасно преобразовывает внешние ссылки во внутренние. Пример ссылки: http://вашсайт.ру/redirect.php?go=http://чужойсайт.ру
Измененный модуль можно скачать по этой ссылке. В архиве, кроме папки модуля, есть файл redirect.php , его нужно поместить в корень сайта.
Посмотреть модуль в работе можно на моем сайте аудиокниг - откройте любой пост и наведите курсор на ссылку.
Для того, чтобы все заработало, нужно установить измененный модуль, скопировать файл redirect.php в корень сайта и в форматах ввода установить флажок "Запрет индексации внешних ссылок", в формате, который вы используете.
Модуль меняет ссылки у вновь созданных постов. Чтобы спрятать ссылки у старых нод, я менял в базе формат ввода для всех нод сначала на один вариант, потом на другой (возможно есть более простой и элегантный способ).
Я использую этот модуль на всех своих сайтах, возможно он пригодится и вам.
Комментарии
Вопрос: а зачем вообще превращать внешние в локальные ссылки? Это как-то влияет на отношение поисковиков к сайту?
а зачем это нужно? вот если бы внешние ссылки не фигурировали бы - другое дело. И кто смотрит откуда идет скач?
По этому модулю можно ограничивать по ролям скачивание тогда уже внешних ссылок?
> Вопрос: а зачем вообще превращать внешние в локальные ссылки? Это как-то влияет на отношение поисковиков к сайту?
Чем больше у вас внешних ссылок с сайта для поисковиков, тем ниже вес каждой ссылки. Поэтому закрытие внешних ссылок является хорошей практикой. И такие сайты ранжируются выше в выдаче.
> а зачем это нужно? вот если бы внешние ссылки не фигурировали бы - другое дело
Они и не фигурируют, все внешние ссылки превращаются во внутренние
Тот, кто любит sape или trustlink знает, зачем это нужно
kamillo, большое спасибо, не видел подобных решений, пол интернета перерыл в поисках подобного плагина.
Ну в таком случае надо обязательно эту штуку прикрутить, но дело в том, что для 7-ки у этого модуля еще нет порта, нашел для себя ext_link_page - думаю, стоящая вещь, буду пробовать.
Спасибо за информацию
как это не фигурируют при наведение на ссылку видно сначала сайт с go а за ней внешняя ссылка
за модуль - спасибо!
вот только есть пара доменов, которые не нужно "прятать". можно ли их оставлять как есть, не перепуская через redirect.php?
в настройках есть секция "ВСЕГДА индексировать и переходить по ссылкам на эти домены:"
пишу туда "http://нужный_домен.ru", захожу в тему с ссылкой - все-равно ссылка выглядит как
http://вашсайт.ру/redirect.php?go=http://нужный_домен.ru
и посмотрел исходный код страницы, ни noindex, ни nofollow не добавились.
так проблема со списком доменов в секции "ВСЕГДА индексировать..." - это косяк модуля или косяк моих настроек?
Скорее всего косяк настроек, если kamillo ничего не сломал меняя модуль.
Убедись что в "Белом листе" у тебя именно домены через запятую вписаны (без http://).
проблема оказалась в моем понимании работы модуля "белый список" обрабатывается только на предмет недобавления закрывающих тегов, редирект.пхп добавляется ко всем внешним ссылкам вне зависимости от списков. а хотелось, что б белый список вообще не изменялся.
ну и странно, что относительные линки тоже через редирект идут...
вообщем, в noindex_external_links.module вытаскиваем из закомментированного кода проверку белого списка и внедряем ее перед оборткой в редирект:
<?php if (in_array($url['host'], $_noindex_external_links_allowed_domains)) return $link;
else {
$url['host'] = "http://".$_SERVER['HTTP_HOST']."/redirect.php?go=".urlencode($match[2]);
return '<a href="'. $url['host'] .'" >'. $match[4] .'</a>';
}?>
а что, если мы делаем ссылку через редирект, то для поисковиков ее в ноиндекс оборачивать и и ноуфолов добавлять не надо?
У меня некоторая нехорошая ситуация сложилось с этим модулем.
При оформлении заказа в корзине выдается текстовое сообщение в этом текстовомм сообщение такой шаблон
Но в результате получается http://www.mysite.com/redirect.pgp.....[node-url]...
Отмечу что сам сайт настроен как mysite.com,
но средстами mod_rewrite идет редирект на www.mysite.com
думаю косяк связан как то с этим, правда в белом списке я оба этих варианта перечислил
также установил в настройках в settings.php явно base_url в www.mysite.com
но все равно
такое ощущение что не смотря ни на что решил поменять, но при этом текст взят без подстановки токенов
Есть мысли, советы?
относительные линки идут через редирект
как вариант - попробуйте настроить сообщение, что б в нем была ссылка не
/order-url/
а
http://www.mysite.com/order-url/
тогда редиректа не будет
Патч чтобы относительные ссылки не редиректирились я уже применял и он работает на подобных ссылках.
Кстати при отключении модуля, фильтр все равно продолжают действовать
Попробовал в белом списке указать [order-url] но не помогло.
Суть в том, что когда в фильтр приходит этот текст в нем еще токен не заменен на url, когда он проходит через фильтр то тот его редиректит, а потом еще запускается какой нить еще фильтр который ескейпит в href текст, то есть скобки, те в свою очередь превращюатся в %XX и когда этот текст уже потом обрабывается модулем token, то своего токена он уже не видет.
Когда и где происходит тогда стандартно замена токенов в тексте?
Появилась еще идея, что сам модуль ескейпит еще не замененный токен ведь вызывается urlencode.
Может не стоит ескейпить url пусть например Фильтр URL запукается после этого модуля и занимается этим. Тогда и токены не будут искажены и заменены модулем токен корректно в результате.
Кому интересно кажется здесь решение этой проблемки http://drupal.org/node/488886
как понял проблема в том что токены надо заменять до их пропуска через фильтры.
То есть это скорее проблема ubercart-а, в принципе если бы белый список работал, то думаю указав в нем через запятую все
подобные токены, можно избежать редиректа без каки либо патчей, но я так понял белые списки не работают?
белый список работает.
а что за патч для правки проблемы с относительными ссылками?
там не столько патч сколько правка одной регулярки
http://dimaseo.ru/noindex-external-links-i-vnutrennie-otnositelnye-ssylki
норм, этот модуль позволяет прятать ссылку на партнерку
к примеру:
www.porno.ru/?id=94594857 - такое спамить не приветствуется
а вот такое:
http://www.мойсайт.ru/redirect.php?go=http://porno.ru/?id=94594857
ну или закодировать, ...
к примеру там... яндекс)
http://hotaudiobook.ru/redirect.php?go=%68%74%74%70%3A%2F%2F%79%61%6E%64...
или .... что-нибудь покрепче
http://hotaudiobook.ru/redirect.php?go=%68%74%74%70%3A%2F%2F%70%6F%72%6E...
ну и хрумаком пройти а далее... почему-то сайт куда-то денется из серпа
можно было написать заголовок посту"это способ заработать"
сделал все по инструкции, а
noindex
так и не разбавляет мои ссылки (
сделал все по инструкции, а
noindex
так и не разбавляет мои ссылки (
> Чтобы спрятать ссылки у старых нод, я менял в базе формат ввода для всех нод
> сначала на один вариант, потом на другой
> (возможно есть более простой и элегантный способ)
может есть идеи про другой, элегантный способ
а то несколько тысяч нод тяжко перелопатить
node_save не помогает
также не решена проблема с оборотом в редирект относительных путей
мне что то кажется что делать замену надо в функции url http://api.drupal.ru/api/function/url/6, а всех кто ее не использует, посылать читать доку :d. Так как l все равно определяет какая ссылка внешняя или нет. а с регуляркой оставить только чтобы белые и черные списки работали.
но url не является заменяемой входит в ядро, зато она зовет функцию
http://api.drupal.ru/api/function/custom_url_rewrite_outbound/6
в принципе ее наверное и надо написать.
просто большинство ссылок все таки создаются функцией l, а все кто этого не делает нарушает негласные принципы
Вот для Drupal 7
В корень сайта go.php
И в роботс.txt строку Disallow: /go.php
Редирект работает пример http://www.bestnews.in.ua
error
ксти а как вы на сайте тимизировали страницу для печати? print
Если вопрос ко мне, то через файл print.tpl.php который есть в папке с модулем. Копируем в папку с темой и вперед. Все как обычно.
Подскажите пожалуйста в чем может быть проблема. После установки модуля Drupal 7.12 сыпятся ошибки:
Notice: Undefined index: host в функции noindex_external_links_replace() (строка 187 в файле /var/.../sites/all/modules/noindex_external_links/noindex_external_links.module).
Notice: Undefined index: host в функции noindex_external_links_replace() (строка 187 в файле /var/.../sites/all/modules/noindex_external_links/noindex_external_links.module).
Notice: Undefined index: host в функции noindex_external_links_replace() (строка 187 в файле /var/.../sites/all/modules/noindex_external_links/noindex_external_links.module).
Модуль супер, но пока не могу воспользоваться. Помогите пожалуйста.
Для версии под drupal 7 если возникнет проблема с редиректом на ссылки с дополнительными параметрами тип
mysite.ru/go.php?go=http://site.com/index.php?param1=123¶m2=234
то можно подкорректировать файл go.php следующим образом:<?php
$link = $_GET['go'];
unset($_GET['go']);
foreach ($_GET as $key => $item) {
$link .= '&' . $key . '=' . $item;
}
header("HTTP/1.1 301 Moved Permanently");
header("Location:".$link);
?>
Все бы хорошо. Но у меня пропали все target=_blank у ссылок. А они мне ой как нужны. То есть я в редакторе СКЕ редактирую ссылку и делаю ее открывающейся в новом окне, сохраняю статью, а там только ссылка - нового окна нет. Может что то нужно подправить в модуле? Не подскажите?
Не нашел, как это сделать автоматически, но можно заставить все внешние ссылки открываться в новом окне, дописав сюда target:
$url['host'] = "http://".$_SERVER['HTTP_HOST']."/redirect.php?go=".urlencode($match[2]);
return ''. $match[4] .'';
А я читал истории о том, как Яндекс выкидывал из индекса страницы, на которых идет редирект внешних ссылок. Мол, что это вы выдаете страницу, на которой нихрена нету, а потом с нее редирект на другой сайт? Не хорошо.
Ну и есть официльнй фильтр Яндекса, который называется "Редирект", но это если редирект не через meta, а с помощью javascript.
Ну и Гугл вроде как тоже понимает, что редиректят на другой сайт.
Кто что пишет. Кто-то пишет, что нефиг использовать редиректы, тем более что ссылка на хорошие тематические ресурсы даже полезна.
В общем, тема показалась мне интересной. Поэтому немножко переделал вышеприведенный модуль под себя. Сделал следующее:
- работает белый список;
- не трогает свои относительные ссылки вида /node/somepage
- сделал кодирование/декодирование base64, по-моему так выглядит лучше
Посмотреть пример можно здесь (счетчики, конечно сделаны вручную, но это не проблема).
Если кому надо - пользуйтесь.
Есть ли возможность использовать это чудо только в определенных типах материалов и/или только в определенных форматах текста?
Забыли уточнить, что под Drupal 6.x