Все о мета-теге Canonical (канонизация (борьба с дублями) ссылок)

Главная Создать свой сайт и продвинуть его Продвижение сайтов Все о мета-теге Canonical (канонизация (борьба с дублями) ссылок)
7 ответ(ов) в теме
moto
не в сети 2 часа
На сайте с 12.03.2017
Администратор
Тем 3402
Сообщения 13586
0
09:43

На многих сайтах одно и то же содержание можно найти по разным URL (дубли ссылок). Предположим, у вас есть сайт по продаже одежды и наиболее популярный товар – зеленое платье. На страницу этого товара можно попасть по разным URL, особенно если у вас используются идентификаторы сеанса либо другие параметры:

http://www.example.com/products/women/dresses<br>http://www.example.com/products?category=dresses&color=green&cruel=no<br>http://example.com/shop/index.php?product_id=32&highlight=green+dress&cat_id=1&sessionid=123&affid=431<br>http://example.com/dresses/cocktail?gclid=ABCD<br>http://www.example.com/dresses/greendress.html<br>

Чтобы более эффективно управлять показом своих URL в результатах поиска и повысить их популярность, рекомендуется выбрать предпочитаемую версию страницы и задать ее URL как канонический (основной). Вы можете указать свои предпочтения для поисковых систем разными способами. Все эти способы являются рекомендуемыми, но не обязательными. Если вы не укажете канонический URL, поисковые роботы попытаются определить его самостоятельно.

Возможные варианты борьбы с дублями страниц:

1. Задайте основной домен
Указав основной домен, вы тем самым сообщите поисковым системам, какой URL ( http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com или http://example.com" target="_blank" rel="nofollow"> http://example.com) более предпочтителен.
Если вы укажете домен http://example.com" target="_blank" rel="nofollow"> http://example.com в качестве основного, поисковые роботы будут обрабатывать ссылки на http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com точно так же, как и ссылки на основной домен. (кстати, основной домен нужно так же прописать в robots.txt)

2. Укажите каноническую ссылку для всех версий страницы
Если нужно сделать http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com/platya/zeleniye.html" target="_blank" rel="nofollow"> http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com/platya/zeleniye.html каноническим URL, вы можете указать его для поисковых систем, добавив элемент <link> с атрибутом rel="canonical" в раздел <head> неканонических страниц. Для этого создавайте ссылки следующим образом:
<link rel="canonical" href="http://www.example.com/platya/zeleniye.html">

Добавьте этот тег в раздел <head> страниц с неканоническими URL.

http://example.com/dresses/greendress.html?gclid=ABCD<br>http://example.com/dresses/index.php?product_id=32&highlight=green+dress&cat_id=1&sessionid=123

Теперь поисковые роботы будет знать, что все эти URL относятся к канонической странице с адресом http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com/platya/zelenoyeplatye.html. Примечание. Google рекомендует использовать ссылку с атрибутом rel="canonical", чтобы указать предпочитаемый URL, но, как он говорит, не может гарантировать, что переходы всегда будут осуществляться по этому адресу.

3. Используйте переадресацию 301
Если на страницу можно попасть несколькими способами, например с помощью ссылок http://example.com" target="_blank" rel="nofollow"> http://example.com/home" target="_blank" rel="nofollow"> http://example.com" target="_blank" rel="nofollow"> http://example.com/home, http://home.example.com или http://www.example.com" target="_blank" rel="nofollow"> http://www.example.com, бывает удобно выбрать один из этих URL-адресов в качестве основного (канонического) и использовать переадресацию 301 для перенаправления на него трафика с других URL. Переадресация 301 на стороне сервера – это лучший способ обеспечить переход пользователей и поисковых систем на нужную страницу. Код статуса 301 означает, что запрашиваемая страница окончательно перемещена в новое местоположение.

Чтобы установить переадресацию 301 для сайтов, размещенных на серверах Apache, необходимо внести изменения в файл сервера .htaccess (создается в корне сайта) (В помощь учебное пособие по созданию .htaccess+ руководство по изменению URL-адресов для Apache)

4. Укажите способ обработки динамических параметров
Используйте обработку параметров, чтобы сообщить Google о параметрах, которые следует игнорировать. Пропуск этих параметров позволяет сократить количество повторяющихся материалов в индексе Google и упрощает сканирование сайта. Например, если указать, что нужно проигнорировать параметр sessionid, Google будет считать, что материалы на страницах www.example.com/dresses/green.htm?sid=273749 и www.example.com/dresses/green.htm совпадают.

5. Укажите каноническую ссылку в HTTP-заголовке
Если у вас есть доступ к настройкам сервера, можно использовать атрибут rel="canonical" в HTTP-заголовках, чтобы указать канонический URL для документов в формате HTML и файлов других типов, например PDF. Предположим, что один и тот же файл PDF на вашем сайте доступен по следующим URL (например, с целью отслеживания):

http://www.example.com/downloads/white-paper.pdf<br>http://www.example.com/downloads/partner-1/white-paper.pdf<br>http://www.example.com/downloads/partner-2/white-paper.pdf<br>http://www.example.com/downloads/partner-3/white-paper.pdf

В этом случае можно сообщить Google, какой из URL-адресов данного файла следует считать каноническим, указав HTTP-заголовок rel="canonical", как показано ниже:
Link: <http://www.example.com/downloads/white-paper.pdf>; rel="canonical"

Редакции сообщения
0
moto
не в сети 2 часа
На сайте с 12.03.2017
Администратор
Тем 3402
Сообщения 13586
0
12:02

Добавляем rel="canonical" в шаблоны материалов Joomla 1.7 - 2.5

Во все файлы шаблона, КРОМЕ index.php, и html/com_content/form/edit.php, добавлено условие запрета генерации ссылки каноникал для главной страницы.
Это сделанно для избежания дублирования ссылки каноникал на главной и редиректа, если в качестве главной указывается определенный материал.

Убираем дубли 🙂

Ссылка Canonical для главной страницы.
Открываем файл templates/МОЙ ШАБЛОН/index.php

Спойлер

после
// No direct access.<br>defined('_JEXEC') or die;

Вставляем
// ------------ Start Canonical-Mod<br>$document = JFactory::getDocument();<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive() == $mainmenu->getDefault()) :<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже.<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> //$docroute = JRoute::_('index.php?Itemid='.$mainmenu->getDefault()->id);<br> // Если в качестве канонической ссылки хотим использовать системную ссылку Joomla типа http://мойсайт.рф/home.html , то раскомментируем сроку выше, и закомментируем строку ниже.<br> $docroute = '/';<br> $document->addHeadLink( $livesite . $docroute . $docpagenr, 'canonical', 'rel', '' );<br>endif;<br>// ------------ End Canonical-Mod

Ссылка Canonical для страниц компонента материалов (com_content)
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/archive/default.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

вставляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $app = JFactory::getApplication();<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница архива<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> $docroute = JRoute::_('index.php?Itemid='.$app->getMenu()->getActive()->id);<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/article/default.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
добавляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $requrl = trim($_SERVER['REQUEST_URI']);<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница материала<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> $docroute = $this->item->readmore_link;<br> <br> // Начало проверки системной ссылки в запросе. (для редиректа 301 или отдачи ошибки 404.)<br> (bool)$valideurl = strpos( $requrl, $docroute );<br> if ($valideurl === false) :<br> header("HTTP/1.1 301 Moved Permanently");<br> header("Location: " . $livesite . $docroute);<br> header("Connection: close");<br> exit();<br> // Если хотим отдать ошибку 404, то закомментируем 4 строки выше этой, и раскомментируем 1 сроку ниже.<br> //JError::raiseError(404, JText::_('PAGE COULD NOT BE FOUND'));<br> endif;<br> // Конец проверки системной ссылки в запросе.<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/categories/default.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
добавляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница категории<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> <br> $docroute = JRoute::_(ContentHelperRoute::getCategoryRoute($this->parent->id));<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/blog.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
вставляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница категории<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> <br> $docroute = JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id));<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/category/default.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
вставляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница категории<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> <br> $docroute = JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id));<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Открываем файл templates/МОЙ ШАБЛОН/html/com_content/featured/default.php

Спойлер
после
// no direct access<br>defined('_JEXEC') or die;<br> <br>JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
вставляем
// ------------ Start Canonical-Mod<br>$mainmenu =& JSite::getMenu();<br>if($mainmenu->getActive()!== $mainmenu->getDefault()) :<br> $app = JFactory::getApplication();<br> $document = JFactory::getDocument();<br> $livesite = substr_replace(JURI::root(), '', -1, 1);<br> <br> $docpagenr = '';<br> $docstart = JRequest::getInt('start',0);<br> if($docstart>0) :<br> // Если хотим чтобы в канонической ссылке прописывалась постраничная разбивка типа start=10..., то раскомментируем сроку ниже. В противном случае будет индексироваться только главная страница архива<br> //$docpagenr = '?start='.$docstart;<br> endif;<br> $docroute = JRoute::_('index.php?Itemid='.$app->getMenu()->getActive()->id);<br> <br> $document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');<br>endif;<br>// ------------ End Canonical-Mod

Необязательный шаг. Чисто для указания запрета индексации формы добавления/редактирования материала.
Открываем файл templates/МОЙ ШАБЛОН/html/com_content/form/edit.php

Спойлер
после
// Create shortcut to parameters.<br>$params = $this->state->get('params');
вставляем
$document = & JFactory::getDocument();<br>$document->setMetadata('robots', 'noindex, nofollow');

Как дополнение желательно делать запрет на индексацию страниц с параметрами ?limitstart и ?limit добавив их в файл robots.txt
Disallow: *?limitstart<br>Disallow: *?limit

Для тех у кого нет файлов-шаблонов в templates/МОЙ ШАБЛОН/html/com_content/ и они не знают где их взять

Спойлер
копируем components/com_content/views/archive/tmpl/default.php в templates/МОЙ ШАБЛОН/html/com_content/archive/default.php
копируем components/com_content/views/article/tmpl/default.php в templates/МОЙ ШАБЛОН/html/com_content/article/default.php
копируем components/com_content/views/categories/tmpl/default.php в templates/МОЙ ШАБЛОН/html/com_content/categories/default.php
копируем components/com_content/views/category/tmpl/blog.php в templates/МОЙ ШАБЛОН/html/com_content/category/blog.php
копируем components/com_content/views/category/tmpl/default.php в templates/МОЙ ШАБЛОН/html/com_content/category/default.php
копируем components/com_content/views/featured/tmpl/default.php в templates/МОЙ ШАБЛОН/html/com_content/featured/default.php
копируем components/com_content/views/form/tmpl/edit.php в templates/МОЙ ШАБЛОН/html/com_content/form/edit.php

Редакции сообщения
0
moto
не в сети 2 часа
На сайте с 12.03.2017
Администратор
Тем 3402
Сообщения 13586
0
17:01

Для Wordpess

Устанавливаем Плагин All-in-One SEO pack -ставим в настройках галочку на Canonical URLs (канонические ссылки)

Редакции сообщения
0
moto
не в сети 2 часа
На сайте с 12.03.2017
Администратор
Тем 3402
Сообщения 13586
0
17:12

Canonical для SMF

Самый простой способ, это установка мода Optimus Brave

Описание

В дополнение к Optimus Brave ставим мод Anti-SID canonical tag - without PHPSESSID param, который позволяет убрать переменную сессии из канонических адресов страниц, т.е если страницы вашего форума попадают в индекс с адресами, содержащими переменную сессии (PHPSESSID), воспользуйтесь этим модом.

Редакции сообщения
0
не в сети 3 месяца
На сайте с
Участник
0
18:03

В joomla 3, разработчики уже встроили тег в шаблон, так что манипуляции с шаблонами уже не нужны

Редакции сообщения
0
constant13
не в сети давно
На сайте с 24.12.2014
Участник
0
07:04

ничего не понял, если честно, понял что штука полезная и нужная, так что пора топать на биржу фриланса )))

Редакции сообщения
0
Ольга Копанина
не в сети давно
На сайте с 12.03.2015
Участник
0
12:32

Как по мне, то этот мега- тег совершенно не нужная вещь, так как Яндекс на него не реагирует. Остаётся два варианта борьбы:
1. оставить всё как есть.
2. бороться старым проверенным способом.

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *