Перейти к контенту
  • 0

Нужна помощь с ссылками


Вопрос

Подскажите где надо прописать что-либо, чтобы ко всем внешним ссылкам, которые публикуются на форуме автоматом прописывался атрибут rel="nofollow". Заранее спасибо.
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Подскажите где надо прописать что-либо, чтобы ко всем внешним ссылкам, которые публикуются на форуме автоматом прописывался атрибут rel="nofollow". Заранее спасибо.

Файл ./sources/classes/bbcode/class_bbcode_core.php:

— найти (в функции 'regex_build_url'):

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\" rel=\"nofollow\">".$show."</a>" . $url['end'];

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А это будет только на Внешние ссылки или если я буду ссылаться на какую-то тему на форуме, то этот атрибут тоже будет присутствовать?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
проставится на всех ссылках?
Да.

Чтобы не корежила внутренние ссылки, можно сделать в конструкции

if (!stristr($url['html'], "твой_домен.ru"))

Заодно и по else убрать target="_blank", чтобы внутренние ссылки открывались в том же окне.

 

 

 

 

Себе (1.х) хочу поставить вот такую конструкцию:

require ROOT_PATH."conf_global.php";
if (stristr($url['html'], $INFO['board_url']))return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
else return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];

Осталось разобраться с репарсингом для редактирования и расширенного цитирования.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

sM1Le, а как сделать для 2.3.х через else как предлагает FatCat? Я понял, что там будет происходить анализ ссылка с сайта или нет, но как конкретно не понял, а пример кода мне тяжело понять так как он для 1.х

Заранее спасибо за помощь.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Этот код для любых версий подходит. здесь нет ни одной переменной, которая бы различалась в версиях, ну разве что может быть $INFO
Ссылка на комментарий
Поделиться на других сайтах

  • 0
if ( stristr($url['html'], $this->ipsclass->vars['board_url']) )
return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
else
return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Если кому-то нужны rel="nofollow", имеет смысл тут же и раздачу им сделать: к внешним линкам добавлять, а внутренним линкам не добавлять, чтобы не мешать поисковкам индексировать свой же сайт:

if ( stristr($url['html'], $this->ipsclass->vars['board_url']) )
return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
else
return $url['st'] . "<a href='".$url['html']."' target='_blank' rel='nofollow'>".$show."</a>" . $url['end'];

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Всё работает.

Этот вариант самый подходящий

if ( stristr($url['html'], $this->ipsclass->vars['board_url']) )
return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
else
return $url['st'] . "<a href='".$url['html']."' target='_blank' rel='nofollow'>".$show."</a>" . $url['end'];

Ссылка на комментарий
Поделиться на других сайтах

  • 0

+ не забудьте про яндексовский <noindex>

+ у меня форум распологается по адресу forum.domain.ru и я бы хотел, чтобы ссылки на мой сайт domain.ru тоже индексировались.

 

Моя версия кода.

 

class_bbcode_core.php

 

Найти

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

 

Заменить на

	$url_parsed = parse_url($this->ipsclass->vars['board_url']);
	$url_parsed = explode(".", $url_parsed['host']);
	$domain = '';

	if (count($url_parsed) > 2) {
		unset($url_parsed[0]);
		$domain = implode($url_parsed, ".");
	}

	if ( stristr($url['html'], $domain) )
		return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
	else {
		return $url['st'] . "<noindex><a href='".$url['html']."' target='_blank' rel='nofollow'>".$show."</a></noindex>" . $url['end'];
	}

 

class_bbcode.php

 

Найти

		//-----------------------------------------
	// Clean up nbsp
	//-----------------------------------------

	$txt = str_replace( '    ', "\t", $txt );
	$txt = str_replace( '  '			, "  ", $txt );

 

Ниже добавить:

		//-----------------------------------------
	// Clean up noindex tags
	//-----------------------------------------

	$txt = str_replace( '<noindex>', "", $txt );
	$txt = str_replace( '</noindex>', "", $txt );

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Заменить на

А чем не просто тупо не устраивает очень простое решение из сообщения 11 вместо ваших 10-ти строчек?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Заменить на

А чем не просто тупо не устраивает очень простое решение из сообщения 11 вместо ваших 10-ти строчек?

 

Если это вопрос ко мне - то объясняю. Внимательно посмотрете на код. У меня форум лежит по адресу forum.domain.ru и я хочу, чтобы ссылки на мой сайт (www.domain.ru) не заключались в noindex.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Внимательно посмотрете на код. У меня форум лежит по адресу forum.domain.ru и я хочу, чтобы ссылки на мой сайт (www.domain.ru) не заключались в noindex.

if (!stristr($url['html'], "domain.ru"))

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Заменить на

А чем не просто тупо не устраивает очень простое решение из сообщения 11 вместо ваших 10-ти строчек?

 

Если это вопрос ко мне - то объясняю. Внимательно посмотрете на код. У меня форум лежит по адресу forum.domain.ru и я хочу, чтобы ссылки на мой сайт (www.domain.ru) не заключались в noindex.

 

Я сделал так: я ввёл имя сайта с www в поле "Ваш сайт" в админке и добавил в условие:

if ( stristr(..форум..) or stristr(..сайт..) ) { без noindex } else { с noindex }

 

Или напрямую прописать, как FatCat говорит. Оба наши варианты наиболее целесообразней чем ваш.

Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Внимательно посмотрете на код. У меня форум лежит по адресу forum.domain.ru и я хочу, чтобы ссылки на мой сайт (www.domain.ru) не заключались в noindex.

if (!stristr($url['html'], "domain.ru"))

 

 

Заменить на

А чем не просто тупо не устраивает очень простое решение из сообщения 11 вместо ваших 10-ти строчек?

 

Если это вопрос ко мне - то объясняю. Внимательно посмотрете на код. У меня форум лежит по адресу forum.domain.ru и я хочу, чтобы ссылки на мой сайт (www.domain.ru) не заключались в noindex.

 

Я сделал так: я ввёл имя сайта с www в поле "Ваш сайт" в админке и добавил в условие:

if ( stristr(..форум..) or stristr(..сайт..) ) { без noindex } else { с noindex }

 

Или напрямую прописать, как FatCat говорит. Оба наши варианты наиболее целесообразней чем ваш.

 

Считаю, что хардкодить домен в код неприемлемым. Поэтому беру url форума и разбираю его.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

ну конечно, из москвы в спб можно ехать в принципе и через хабаровск...

дело ваше.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Считаю, что хардкодить домен в код неприемлемым. Поэтому беру url форума и разбираю его.

Идея хороша, но реализация подкачала.

http://www.google.com/search?q=test+-domain.ru - как отпарсится Вашим алгоритмом?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Считаю, что хардкодить домен в код неприемлемым. Поэтому беру url форума и разбираю его.

Идея хороша, но реализация подкачала.

http://www.google.com/search?q=test+-domain.ru - как отпарсится Вашим алгоритмом?

 

Вы правы, это не учел.

 

Заменить:

if ( stristr($url['html'], $domain) )

 

на:

if ( stristr($url_parsed['host'], $domain) )

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вы правы, это не учел.

 

Заменить:

if ( stristr($url['html'], $domain) )

 

на:

if ( stristr($url_parsed['host'], $domain) )

Я имел в виду другое:

$url_parsed = parse_url($this->ipsclass->vars['board_url']);

$url_parsed = explode(".", $url_parsed['host']);

$domain = '';

 

if (count($url_parsed) > 2) {

unset($url_parsed[0]);

$domain = implode($url_parsed, ".");

}

 

$url_file_a = explode("?", $url['html']]);

$url_file = $url_file_a[0];

 

if ( stristr($url_file, $domain) )

return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];

else {

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

}

 

То есть, исключить из проверки передаваемые параметры адресной строки.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
То есть, исключить из проверки передаваемые параметры адресной строки.

 

parse_url тоже самое, только проще - http://ru2.php.net/parse_url

 

В случае если сделать $url = parse_url('http://somedomain.ru/?aaa=bbb');

 

то в $url['host'] попадет ТОЛЬКО somedomain.

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.