Jump to content

[Fix] Canonical страниц с кириллическими тегами


siv1987
 Share

Recommended Posts

Заметил давно что ПС индексируют страницы типа:

правильная, каноническая страница:

  • /tags/forums/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/

дубли этой страницы:

  • /tags/forums/%25D0%25BF%25D1%2580%25D0%25B8%25D0%25B2%25D0%25B5%25D1%2582/
  • /tags/forums/%2525D0%2525BF%2525D1%252580%2525D0%2525B8%2525D0%2525B2%2525D0%2525B5%2525D1%252582/
  • /tags/forums/%252525D0%252525BF%252525D1%25252580%252525D0%252525B8%252525D0%252525B2%252525D0%252525/
  • и так далее каждый раз закодированный урл предыдущего адреса.

Сейчас, занимаясь оптимизацией одного форума, снова наткнулся в логах на подобные запросы. В исходный код этой страницы оказывается, что в canonical висит двойной urlencode тега. Боты запрашивают канонический адрес, там снова происходит кодирование адреса, и так повторяется до бесконечности. И все эти адреса залетают в индекс.

 

"Временный" фикс:

Открыть /admin/applications/core/modules_public/search/search.php

Найти

		$this->registry->output->addCanonicalTag( 'app=core&module=search&do=search&search_tags=' . IPSText::urlencode_furlSafe( $this->request['search_tags'] ) . '&search_app=' . $this->request['search_app']. $extra, $this->request['search_tags'], 'tags' );

Заменить на

		$this->registry->output->addCanonicalTag( 'app=core&module=search&do=search&search_tags=' . IPSText::urlencode_furlSafe( IPSSearchRegistry::get('in.raw_search_tags') ) . '&search_app=' . $this->request['search_app']. $extra, $this->request['search_tags'], 'tags' );

  • Upvote 2
Link to comment
Share on other sites

Суть в том, что в индексе (там, где не запрещены теги к индексации) появляются куча пустых страниц, и берутся они с большой долей вероятности не откуда как из битого тега rel canonical.

http://www.google.ru/#newwindow=1&q=site:www.a108.net+inurl:tags

 

Для себя я еще настроил 404 код если темы не найдены, чтобы отвалились все левые адреса.

 

Открыть admin\applications\core\modules_public\search\search.php

 

Найти

	/* Output */
	$this->title   = $this->lang->words['search_results'];

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

	if ( $count < 1 )
	{
		$this->registry->output->setHeaderCode( 404 );
	}

  • Upvote 3
Link to comment
Share on other sites

Дублирующие по крайней мере есть. Все что содержит %2525 является производным. Чпу ссылки в гугле должны выглядеть естественно.

  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...

@Zero108, вы можете редактировать топик на ИПС? Там нужно поменять urlencode на urlencode_furlSafe, потому что в 3.4.5 она отличается по результату с стандартной функции urlencode (вместо разделителя слов +, теперь это %2B).

Link to comment
Share on other sites

У меня 3.4.6. Баг-рапорты не редактируются вообще, будучи один раз запощёнными. Что написать под баг-рапортом и что изменить в коде на моем сайте?

Link to comment
Share on other sites

  • 1 year later...

Исправьте баг, со временем они должны выпасть из индекса. Время обновления выдачи зависит от скорости переиндексации.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...