Перейти к содержимому
Русский язык для Invision Community 5

Noindex и nofollow в ссылках форума

Подскажите как сделать чтобы в подписи и в сообщениях к любым ссылкам автоматически добавлялись тэги noindex, nofollow?

Рекомендованные сообщения

В подписях нет ничего проще. Есть шаблон signature_separator (кажется так) в группе skin_global. Закройте переменную $sig в noindex.

Хотя гораздо проще запретить просмотр подписей гостям, а, следовательно, и ботам.

И это даже лучше, так как nofollow в шаблон не вставить к переменной.

 

А вот о том, чтобы ко всем ссылками это добавлялось, наверное надо править bb-коды. Почитайте у Сонга, там не конкретно, но на эту тему много. Я пыталась вникать , но ничего не поняла, а времени на осмысление было мало.

 

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

  • Автор

Да, либо редирект либо эти тэги - хотя кашу маслом не испортишь - можно использовать и то и то :(

Если Влад мод для редиректа от 2.1 переделает, напишу в этой теме. А может он его и в архив выложит, не спрашивала.

С редиректом можно жить спокойно, хотя вот в инструментах вебмастера Гугля встречаю на себя бэки с мастертолка, где редирект установлен.

Там урлы, кстати, автоматом не парсятся, но через bb-коды работают.

я у себя сделал проще... Правда бб коды править пришлось, зато все ссылки "внешние" режутся. :(

могу выложить

Выложи, пожалуйста :(

варварский метод, но сейчас.

./sources/classes/bbcode/class_bbcode_core.php

найти

return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];

заменить на

		//return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
	if ( (strpos($url['html'], "http://ВАШ ДОМЕН") !== false) or (strpos($url['html'], "http://www.ВАШ ДОМЕН") !== false) )
	{
		return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
	}
	else
	{
		return ( isset($url['st']) ? $url['st'] : '' ) . "<noindex><a href=\"".$url['html']."\" target=\"_blank\" rel=\"nofollow\">".$show."</a></noindex>" . $url['end'];
	}

./sources/classes/bbcode/class_bbcode_legacy.php

найти

$txt = preg_replace( "#<a href=[\"']mailto:(.+?)['\"]>(.+?)</a>#"								   , "\[email=\\1\]\\2\[/email\]"   , $txt );

добавить выше

			$txt = preg_replace( "#<noindex>#"								   , ""   , $txt );
		$txt = preg_replace( "#</noindex>#"								   , ""   , $txt );

./sources/classes/bbcode/class_bbcode.php

найти

$txt = preg_replace( "#<a href=[\"']mailto:(.+?)['\"]>(.+?)</a>#s"								   , "\[email=\\1\]\\2\[/email\]"   , $txt );

Выше добавить

			$txt = preg_replace( "#<noindex>#"								   , ""   , $txt );
		$txt = preg_replace( "#</noindex>#"								   , ""   , $txt );

 

просто нагло проверяю начало строки на вхождение разрешенного сайта, и делаю ссылку. Если поддомены есть, то добавлять надо с помощью OR. Почему так? Я до сих пор плохо разбираюсь в регулярных выражениях, да и писал не долго это все, для знакомого.

А там только для noindex работает?

Дело в том, что noindex понимает только Яндекс в таких ссылках. Для мировых поисковиков необходимо nofollow - это атрибут тега .

 

Ссылка в итоге должна принять вид анкор.

По идее nofollow можно в метатеге в header вписать, но тогда ссылки Гуглем не будут индексироваться вообще везде.

А через bb коды это как?

да что вы прям, там и нофоллоу есть. :) вглядитесь

return ( isset($url['st']) ? $url['st'] : '' ) . "<noindex><a href=\"".$url['html']."\" target=\"_blank\" rel=\"nofollow\">".$show."</a></noindex>" . $url['end'];

Спасибо... :)

  • 2 недели спустя...
  • Автор

Да, получилось, спасибо!

Вот ещё бы переадресацию сделать с чёрным/белым списком - было бы вообще круто!

  • 2 месяца спустя...
  • Автор

andaril

А можно как-нибудь сделать так, чтобы все поддомены определённого домена пропускались, чтобы не прописывать кучу вариантов, а к примеру сделать так: *.moy_sait.ru

я подумал. Можно такое написать, но если урл будет вида _http://porno.mnogo/index.php?fjdkf=fsdfs&moy_sait.ru то такая ссылка тоже отпарсится без ноиндекс.

  • Автор

Ну такой вариант хоть и возможен, но представляется мне крайне маловероятным.

так попробуйте (изменять только слова "ВАШ ДОМЕН")

		//return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
	if ( preg_match( '/http:\/\/(.*?)ВАШ ДОМЕН/i', $url['html'] ) )
	{
		return ( isset($url['st']) ? $url['st'] : '' ) . "<a href=\"".$url['html']."\" target=\"_blank\">".$show."</a>" . $url['end'];
	}
	else
	{
		return ( isset($url['st']) ? $url['st'] : '' ) . "<noindex><a href=\"".$url['html']."\" target=\"_blank\" rel=\"nofollow\">".$show."</a></noindex>" . $url['end'];
	}

  • 2 месяца спустя...

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

Просто мне кажется, что если бы при попытке сделать сообщение со ссылкой(ми) форум выдавал бы запрет отправки сообщения, пока не будет удалена ссылка(ки) и это помогло бы избавится от спаммерских ботов, которые как раз и выкладывают на форумах кучи ссылок!

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.