Как убрать внешние ссылки вида http://...

+21
2.58K

Запись устарела, для релиза 1.8 неактуально!

Сайты на InstantCMS представляют из себя в дефолтном варианте достаточно легкую и заманчивую мишень для спамера, т.к. безанкорные ссылки вида "скачать dvd можно тут spammersite.ru" вполне успешно работают сейчас как в Яндексе, так и в Гугле. Можно защититься от этого, пожертвовав некоторой долей удобства для пользователей, — отредактировать библиотеку bbcode, убрав автогенерацию кликабельных ссылок:
Редактируем файлик /includes/bbcode/bbcode.lib.php
находим на 914 строке:
  1. function insert_smiles($text) {
  2. $text = nl2br(htmlspecialchars($text,ENT_NOQUOTES));
  3. $text = str_replace(' ', '  ', $text);
  4. $search = array(
  5. "'(.)((http|https|ftp)://[\w\d-]+\.[\w\d-]+[^\s<\"\']*[^.,;\s<\"\'\)]+)'si",
  6. "'([^/])(www\.[\w\d-]+\.[\w\d-]+[^\s<\"\']*[^.,;\s<\"\'\)]+)'si",
  7. "'([^\w\d-\.])([\w\d-\.]+@[\w\d-\.]+\.[\w]+[^.,;\s<\"\'\)]+)'si"
  8. );
  9. $replace = array(
  10. '$1<a href="$2" target="_blank">$2</a>',
  11. '$1<a href="http://$2" target="_blank">$2</a>',
  12. '$1<a href="mailto:$2">$2</a>'
  13. );
  14. $text = preg_replace($search, $replace, $text);
  15. foreach ($this -> mnemonics as $mnemonic => $value) {
  16. $text = str_replace($mnemonic, $value, $text);
  17. }
  18. return $text;
  19. }
и комментируем строчки автогенерации ссылок из урл:
  1. function insert_smiles($text) {
  2. $text = nl2br(htmlspecialchars($text,ENT_NOQUOTES));
  3. $text = str_replace(' ', '  ', $text);
  4. $search = array(
  5. /*"'(.)((http|https|ftp)://[\w\d-]+\.[\w\d-]+[^\s<\"\']*[^.,;\s<\"\'\)]+)'si",
  6.   "'([^/])(www\.[\w\d-]+\.[\w\d-]+[^\s<\"\']*[^.,;\s<\"\'\)]+)'si",*/
  7. "'([^\w\d-\.])([\w\d-\.]+@[\w\d-\.]+\.[\w]+[^.,;\s<\"\'\)]+)'si"
  8. );
  9. $replace = array(
  10. /*'$1<a href="$2" target="_blank">$2</a>',
  11.   '$1<a href="http://$2" target="_blank">$2</a>',*/
  12. '$1<a href="mailto:$2">$2</a>'
  13. );
  14. $text = preg_replace($search, $replace, $text);
  15. foreach ($this -> mnemonics as $mnemonic => $value) {
  16. $text = str_replace($mnemonic, $value, $text);
  17. }
  18. return $text;
  19. }
После этого во всех новых! постах то, что раньше оформлялось ссылкой (http, www), будет обычным текстом. Возможность сделать кликабельную ссылку через меню редактора остается, но там о нас уже позаботились разработчики, сделав ее через редирект. Проверял на форуме и стене пользователя.
!!! Должен предупредить, что имею весьма смутные понятия о php и программировании в целом, наверняка этот код можно улучшить, да и вообще по уму эту автозамену лучше оставить и просто пропустить через уже имеющуюся функцию редиректа, тогда и кликабельность сохранится и вес не утечет.
seo
0
Alexneva Alexneva 13 лет назад #
Я всегда думал, что надо защищать адреса e-mail от спамерских роботов. А вот ссылки зачем?
0
googlebot googlebot 13 лет назад #
Вы не ссылки защищаете, а свой сайт от ссылок:) Кроме почтового спама существует еще ссылочный, предназначенный не для людей, а для поисковых систем, вам очень повезло, что Вы с ним еще не сталкивались:)
0
Alexneva Alexneva 13 лет назад #
А nofollow не судьба применить? Если уж с noindex-ом непонятки... Полезно для Вашего сайта в любом случае, нечего ТИЦ транжирить )
0
googlebot googlebot 13 лет назад #
Атрибут nofollow потерял на мой взгляд всякий смысл после изменения действия его алгоритма для гугла более года назад - теперь вес по такой ссылке акцептору не передается, но со страницы донора все равно утекает. Вот даже источник отыскал: http://www.mattcutts.com/blog/pagerank-sculpting/ Тут вольный перевод: http://www.seonews.ru/events/detail/117393.php А насчет влияния на ТИЦ точной инфы у меня нет.
0
Pampa Pampa 13 лет назад #
Спасибо, уже пользуюсь!
+1
picaboo picaboo 13 лет назад #
К сожалению уже и не кликабельные ссылки работают ;(( Лучше сделать разделение, набрал кармы - пости кликабельную ссылку, кармы нет ( свеже регнутый) тогда полный запрет воообще на ссылки. Сделать проверку на указание доменной зоны и вставлять пробел. Ссылка типа instantcms .ru - становится полностью бессмысленной для спамера, а юзеры имеют возможность ей воспользоваться при необходимости
0
googlebot googlebot 13 лет назад #
picaboo откуда такая инфа? написанное в текстовом виде _http://site.ru является упоминанием, но никоим образом не ссылкой, и никаких репрессий от поисковиков Вы от таких упоминаний не получите, даже если упоминать будете доры, фарму и порно.
0
picaboo picaboo 13 лет назад #
Просто поверьте на слово что получше кликабельной ссылки иной раз ;))
0
RooKee RooKee 13 лет назад #
Ключевое слово "является упоминанием".
0
RooKee RooKee 13 лет назад #
я бы просто добавил rel="nofollow" и noindex, а не удалял их вовсе.
0
Alexneva Alexneva 13 лет назад #
Насколько я знаю, noindex сейчас очень не рекомендуют использовать.
0
SKЛAVИN SKЛAVИN 12 лет назад #
Ну ладно с nofollow разобрались, что уже не стоит использовать, а с noindex то что не так???!
0
futuristian futuristian 13 лет назад #
С пол года назад Гугл изменил своё отношение к атрибуту "nofollow". Теперь его наличие впустую (вникуда) расходует вес страницы. http://ru.wikipedia.org/wiki/Nofollow Изменения в алгоритме nofollow: В конце 2009 года поисковая система Google изменила алгоритм действия атрибута nofollow.[3] До этого изменения, ссылка, которая была заключена в атрибут nofollow, не передавала вес со страницы-донора (ссылающаяся страница) странице-акцептору (страница, на которую ссылаются), при этом страница-донор сохраняла свой вес. Но, после изменения алгоритма, страница-донор по-прежнему не передает вес странице-акцептору, но и вес ссылки, который донор должен был передать у него не остается. Другими словами, вес со страницы-донора просто испаряется.
0
Alexneva Alexneva 13 лет назад #
Тогда только один выход - через PHP-файл?
+1
DSE DSE 13 лет назад #
если сделать страницу редиректа с информацией что пользователь покидает сайт и т.д то будет намного лучше ,
+1
13 лет назад #
Спасибо!
0
SKЛAVИN SKЛAVИN 12 лет назад #
Ребят, ткните носом пожалуйста, где лежит решение вопроса с внешними ссылками (редирект или что там)...
0
Helg Helg 11 лет назад #
И меня ткните где искать
0
googlebot googlebot 11 лет назад #
Что искать? - во всех компонентах, кроме статей, сейчас ссылки сделаны через редирект, а для статей существует модерация.
0
Helg Helg 11 лет назад #
Через редирект это если ссылка ставится через панель, а если тупо воткнута в текст такая http:// и в таком виде отображается, то как?
0
googlebot googlebot 11 лет назад #
Ну если эти упоминания так уж мешают, сделайте простой фильтр с использованием регулярок.
0
Helg Helg 11 лет назад #
И как его сделать?
0
googlebot googlebot 11 лет назад #
заглянуть в системе в папку /filters/ посмотреть как устроены системные фильтры и написать свой, потом загрузить его на сайт и включить в админке.
0
Helg Helg 11 лет назад #
афигеть так все простоооо.... )))))))))) чет смайлы не пашут админыыыы, ау... в мазилле
0
lokanaft lokanaft 11 лет назад #
В опере уже давно так, смеритесь.
0
Helg Helg 11 лет назад #
))))))))))) да я и не возмущался
+1
googlebot googlebot 11 лет назад #
не пойму Вашей иронии, вам в формате комментариев дать курс основ пхп и регулярных выражений? когда-то делал это для своего сайта вот и поделился с людьми. Делать что-то еще для ветки 1.10 и ранее нет сейчас ни желания, ни возможностей. Не можете сделать сами - Вам сюда.

Еще от автора

Контекстные ссылки v2.2
Предистория тут и тут
Плагин "Контекстные ссылки" v2.1
Модификация плагина Марата версии 2.0 (с хаком /admin/applets/plugins.php) Основные отличия: 1.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.