Seo-Бизнес блог Progress-project

Все о создании, продвижении сайтов и заработке в интернете

Обновлённый дизайн блога Progress-project
logotip «Progress-project»
logotip «Progress-project»

Ссылки на канонические страницы. Важный атрибут rel=canonical

Здравствуйте уважаемые друзья, сегодня на «Progress-project» abrek-ad-abra.ru я хочу поговорить с вами об атрибуте «rel=canonical» или, что такое Канонический url и как организовать на своём блоге вывод ссылок на канонические страницы. И так поехали.

Что такое каноническая страница

Каноническая страница это главная страница перед всеми своими возможными (клонами) дублями.
Давайте немного по подробней. К примеру на данном блоге есть статья о хостинг провайдере и имеет она следующий url: https://abrek-ad-abra.ru/kakoj-xosting-vybrat/, кликнув по которому вы без каких либо проблем перейдёте на неё. Теперь для примера давайте добавим на конец данного линка любое цифровое значение, ну к примеру 111.

https://abrek-ad-abra.ru/kakoj-xosting-vybrat/111/

Кликаем по нашей новой ссылке и в результате попадаем всё на ту же статью!
Я думаю вы знаете то, что подобные изменения в url расцениваются поисковыми системами, как совершенно два разных адреса, связи с чем мы с вами имеем полнейший дубль.
Окончание в url может быть какое угодно, вовсе не обязательно это должны быть цифры, на пример: ?abc, что довольно часто и происходит, подобные или какие либо другие окончания могут быть сформированы на вашем сайте каким либо скриптом, плагином или же добавлены в адурилки поисковых систем по злому умыслу ваших конкурентов, что неминуемо приведёт к бану.

И вот именно для борьбы с данной проблемой был создан атрибут:

rel="canonical"

Который своим присутствием указывает поисковым роботам на то, что именно эта страничка с url=canonical и является настоящей а всё остальное просто дубли и их индексировать не нужно. Думаю объяснил понятно.

Прописывается rel canonical впереди url в header между <head></head>.

All in One SEO Pack есть ли реальная проблема плагина с rel=canonical

Не так давно я совершенно случайно наткнулся на статью достаточно известного блогера который утверждает, что в плагине «All in One SEO Pack» присутствует серьёзный изъян, который может привести к дублям страниц, как мы с вами рассмотрели выше и настоятельно рекомендует поменять его на «Platinum SEO Pack».

На самом же деле никакой ошибки в «All in One SEO Pack» нет. Если сказать проще не углубляясь в технические вопросы то в данном плагине установлена самая, что не наесть стандартная функция: «rel_canonical()», как и в самом CMS. Которая в свою очередь работает только лишь на sigle-post или же page. То есть всё это прекрасно работает только лишь на главной странице, но у нас ведь ещё имеются и странички с категориями или архивами. Конечно полностью отказываться от данного плагина не стоит, тем более, что всё это очень просто исправить, чем мы и займёмся.

Но прежде давайте рассмотрим ещё один возможный вариант дублей url вашего сайта со следующей и предыдущей статей которые в WordPress помечаются тегами:

rel="next" и соответственно: rel="prev".

И так, как же нам всё это исправить и прописать атрибут rel=canonical на всех необходимых url, что бы навсегда избавиться от дублей страниц.

Дублирующие url с атрибутом next и prev

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

Для этого находим в теме и открываем для редактирования файл: «functions.php» где после <?php вставляем следующую функцию:

function progress_remove_prev_link( $data ) {
return false;
}
add_filter( 'aioseop_prev_link', 'progress_remove_prev_link' );
add_filter( 'aioseop_next_link', 'progress_remove_prev_link' );

Сохраняем изменения и переходим к выводу на блоге: «rel=canonical».

Вывод канонических ссылок на WordPress

Так же в «functions.php» темы вставляем код который и будит выводить все канонические ссылки на страницах блога.

Функция вывода атрибута: rel=canonical
/*** Функция вывода rel="canonical" ***/ 

function progress_canonical(){
		if (is_home() ) {
			$progress_chief_link = get_option('home');
			$progress_home_link = progress_link_paged($progress_chief_link);
			$progress_home_link = trailingslashit($progress_home_link);
			{
		echo "".''."\n"; 
	}
} else if (is_category()) {
			$progress_cat_link = get_category_link(get_query_var('cat'));
			$progress_category_link = progress_link_paged($progress_cat_link);
			{
		echo "".''."\n"; 
	}
} else if (function_exists('is_tag') && is_tag()){
			$tag = get_term_by('slug',get_query_var('tag'),'post_tag');
		if (!empty($tag->term_id)) {
	        $tag_link = get_tag_link($tag->term_id);
	        } 
			$progress_tag_link = progress_link_paged($tag_link);
			$progress_tag_link = trailingslashit($progress_tag_link);
		   {
		echo "".''."\n"; 
	}
} else if (is_author()){
			global $cache_userdata;
	        $userid = get_query_var('author');
	        $progress_auth_link = get_author_link(false, $userid, $cache_userdata[$userid]->user_nicename);
			$progress_author_link = $this->progress_link_paged($progress_auth_link);
        {
		echo "".''."\n"; 
	}
} 
else if (is_date()){
if (get_query_var('m')) {
		        $m = preg_replace('/[^0-9]/', '', get_query_var('m'));
		        switch (strlen($m)) {
		            case 0: 
		                $progress_date_link = get_year_link($m);
						$progress_date_link = progress_link_paged($progress_date_link);
		                break;
		            case 1: 
		                $progress_date_link = get_month_link(substr($m, 0, 4), substr($m, 4, 2));
						$progress_date_link = progress_link_paged($progress_date_link);
		                break;
		            case 2: 
		                $progress_date_link = get_day_link(substr($m, 0, 4), substr($m, 4, 2),
		                                     substr($m, 6, 2));
						$progress_date_link = progress_link_paged($progress_date_link);					 
		                break;
		            default:
		                $progress_date_link = '';
		        }
				}
				if (is_day()) {
		        $progress_date_link = get_day_link(get_query_var('year'),	get_query_var('monthnum'), get_query_var('day'));
				$progress_date_link = progress_link_paged($progress_date_link);					 
		    } else if (is_month()) {
		        $progress_date_link = get_month_link(get_query_var('year'), get_query_var('monthnum'));
				$progress_date_link = progress_link_paged($progress_date_link);					   
		    } else if (is_year()) {
		        $progress_date_link = get_year_link(get_query_var('year'));
				$progress_date_link = progress_link_paged($progress_date_link);
		    }
		{
		echo "".''."\n"; 
		}
	}
}
function progress_link_paged($link) {
			$progress_page = get_query_var('paged');
			$progress_check = function_exists('user_trailingslashit');
	    if ($progress_page && $progress_page > 1) {
	        $link = trailingslashit($link) ."page/". "$progress_page";
	        if ($progress_check) {
	            $link = user_trailingslashit($link, 'paged');
	        } else {
	            $link .= '/';
	        }
		}
			return $link;
	}
add_action('wp_head', 'progress_canonical');

/*** Конец функции вывода rel="canonical" ***/

Обязательное условие: при использовании плагина: All in One SEO Pack в его настройках убрать галочку в чебоксе.

После этого, как и прежде сохраняем файл.

Данный код значительно расширит возможности WordPress в плане вывода ссылок на канонические страницы и теперь независимо от того архив ли это, категория или запись. Функция везде где это нужно будет выводить: rel=canonical.

У меня на этом сегодня всё, делитесь результатом проделанной работы в комментариях, до новых встреч!

С уважением, автор блога!
© progress-project
★Обновлено:2016-05-20

Введите свой e-mail:

Вы можете поделиться статьёй в социальных сетях:

Ваш комментарий

Внимание! Перед тем, как вставить в комментарий: html, php либо JavaScript, преобразуйте его в HTML сущность!

» Подписаться на комментарии по RSS
Поиск по блогу

Введите свой e-mail:

ВКонтакте Google+ Facebook RSS-лента сайта abrek-ad-abra.ru

Топ комментаторов

Виктор(6)
seoonly(4)
Николай(3)
Олег(3)
Иван(3)

© 2015-2017

SEO-Бизнес блог «Progress-project».

Все материалы, опубликованные на сайте: принадлежат автору и охраняются в соответствии с законодательством РФ.

При использовании материалов сайта гиперссылка на обязательна!



seo-блог