Как побороть дубли страниц на uCoz/uWeb

Дата обновления: 08 Марта 2014
2014-03-08T11:54
Audiophile's Software

Не так давно я начал полномасштабную кампанию по SEO оптимизации своего ресурса. К SEO специалистам (того же Profit-Partner) я обращался уже давненько. Кроме всего прочего, первым делом они посоветовали мне избавиться от страниц-дублей. Это такие страницы, которые имеют разные адреса (URL), но идентичны по содержимому.

Почему дубли — это плохо?

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

Примеры дублей

У CMS uCoz/uWeb, изначально рассчитанного на пользователей недалеких, примеров дублей огромное множество. Вот некоторые из них:

https://audiophilesoft.com/publ/
https://audiophilesoft.com/publ

https://audiophilesoft.com/forum/
https://audiophilesoft.com/forum

— и т. п. для различных модулей. Это является вопиющей ошибкой, т. к. строго говоря, /forum/ — это каталог (в котором обычно подхватывается файл index.*), а /forum — файл без расширения.

Для первой страницы архива новостей дубля даже три:

https://audiophilesoft.com/news/
https://audiophilesoft.com/news/1
https://audiophilesoft.com/news

Еще больше дублей для материалов:

https://audiophilesoft.com/publ/my/hq_pc_sound/11-1-0-24
https://audiophilesoft.com/publ/my/11-1-0-24
https://audiophilesoft.com/publ/11-1-0-24
https://audiophilesoft.com/publ/software/hq_pc_sound/4-1-0-24

— и т. д, в т. ч. в модулях новостей, программ и в блоге. Некоторые из этих дублей переадресовывают на правильный адрес (первый в списке), однако бывают исключения.

Как бороться?

В идеале следовало бы установить 301-ю переадресацию (Moved permanently), но наш замечательный движок таковое осуществить не позволяет. Потому единственным верным решением будет использование тега <link rel="canonical" href="правильный адрес"/>. Он работает для большинства поисковых систем и сообщает, что данная страница является дублем указанной, т. е. текущий адрес является неканоническим, индексировать его не надо, а весь ссылочный вес надо передавать по указанному адресу. На канонической странице такого тега быть не должно.

И тут начинаются танцы-пляски с синтаксисом движка, т. е. поиски способа проверки текущего адреса на каноничность и в случае необходимости подстановка тега со ссылкой на каноничную страницу. К счастью, я (отчасти сам, отчасти с помощью поддержки uWeb) уже исследовал все нюансы работы движка и нашел 100% рабочий код для подстановки нужного тега в нужные страницы. Вот код для различных шаблонов (вставлять внутри <head></head>):

Модули статей и файлов: страница материала и комментариев к нему

<?ifnot($REQUEST_URI$=$ENTRY_URL$)?><link rel="canonical" href="$HOME_PAGE_LINK$$ENTRY_URL$"/><?endif?>

В данном случае алгоритм следующий: если текущий URL (в данном случае переменная возвращает URL без адреса домена) не совпадает с адресом материала, прописать тег со ссылкой на полный адрес материала (включая домен).

Модули статей и файлов: главная страница каталога

<?if(strpos($REQUEST_URI$,"/publ/")= -1)?><link rel="canonical" href="$HOME_PAGE_LINK$/publ/" /><?endif?>
и <?if(strpos($REQUEST_URI$,"/load/")= -1)?><link rel="canonical" href="$HOME_PAGE_LINK$/load/" /><?endif?>

Здесь проверяется вхождение в текущий адрес правильного адреса каталога. Если вхождений нет, прописывается тег с каноническим адресом.

Модули новостей и модуль блога: страница материала и комментариев к нему

<?if(strpos($ENTRY_URL$,$REQUEST_URI$)= -1)?><link rel="canonical" href="$ENTRY_URL$" /><?endif?>

Проверяется вхождение в текущий адрес правильного адреса материала. Если вхождений нет, прописывается тег с каноническим адресом.

Модуль новостей: страница архива материалов

<?if($CURRENT_PAGE$="1" && $REQUEST_URI$!='/news/')?><link rel="canonical" href="$HOME_PAGE_LINK$/news/" /><?endif?>

Если текущая страница — первая, а текущий URL не соответствует правильному адресу модуля, прописать тег с правильным адресом.

Модуль блога: главная страница дневника

<?if($CURRENT_PAGE$="1" && $REQUEST_URI$!='/blog/')?><link rel="canonical" href="$HOME_PAGE_LINK$/blog/" /><?endif?>

Если текущая страница — первая, а текущий URL не соответствует правильному адресу модуля, прописать тег с правильным адресом.

Модуль форума: общий вид страниц форума

<?if($URI_ID$='frMain' && strpos($REQUEST_URI$,"/forum/")= -1)?><link rel="canonical" href="$HOME_PAGE_LINK$/forum/" /><?endif?>

Если текущая страница — главная страница форума, и в текущий адрес отсутствует вхождение правильного адреса, прописать тег с правильным адресом.



Вот, собственно, и всё. Если вы правильно прописали код, в течение нескольких ближайших выдач из индекса Google, Яндекс и некоторых других поисковиков выпадут страницы-дубли.

Яндекс.Вебмастер: документ является неканоническим


Информация от спонсора

LIVETEX: звонки с сайта по технологии LiveTex. Используя звонок с сайта от Livetex, Вы можете организовать дозвон просто по нажатию кнопки на специальное приложение или на любой телефонный номер.

 
   
Добавил: Audiophile | Просмотров: 3746 | Рейтинг: 5.0/5, голосов: 4
Комментариев: 6
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
0   Спам
[6] shuvay (02 Сентября 2014 09:33)
Спасибо, помогло. У Вас опечатка, 2 раза закрыт тег if
Модуль новостей: страница архива материалов<?if($CURRENT_PAGE$="1" && $REQUEST_URI$!='/news/')?><link rel="canonical" href="$HOME_PAGE_LINK$/news/" /><?endif?><?endif?>
0   Спам
[1] TiLL (08 Августа 2014 01:43)
Спасибо, весьма познавательно!
Однако, столкнулся с проблемой в категории новостей.
Код:
<?if($CURRENT_PAGE$="1" && $REQUEST_URI$!='/news/')?><link rel="canonical" href="$HOME_PAGE_LINK$/news/" /><?endif?>

Следуя этому коду также становятся неканоническими страницы категорий новостей, к примеру:
site.ru/news/obzor/1-0-2
site.ru/news/info/1-0-4
Канонической страницей для них становится site.ru/news/

Как это исправить и оставить нетронутыми страницы категорий? Так как страницы категорий удалось привести к нормальному виду и они нормально ранжируются по некоторым запросам.
+1  
[2] Audiophile (12 Августа 2014 20:19)
Audiophile
Не пользуюсь категориями - проверить не могу. Попробуйте добавить условие &&$PAGE_ID$='nwArchive'
0   Спам
[3] TiLL (12 Августа 2014 21:10)
Спасибо, помогло :)
0   Спам
[4] TiLL (13 Августа 2014 17:26)
А еще, пожалуйста, подскажите.
Как быть со страницами 2,3,4 и т.д. в категориях?
По типу:
site.ru/news/obzor/1-0-1 - Главная страница категории.
А как быть со страницами:
site.ru/news/obzor/2-0-1
site.ru/news/obzor/3-0-1
site.ru/news/obzor/4-0-1
Что еще добавить, чтобы сделать их неканоническими? А канонической сделать главную страницу категории.
0  
[5] Audiophile (16 Августа 2014 11:03)
Audiophile
Не понял. Хотите чтобы страницы категории ссылались на первую как на каноническую? Зачем? Они же разные по содержимому.