Дубли в WordPress и календарь

Ваш отзыв

unicum

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

Чтобы убедиться, что дубли есть (да-да, лучше посмотреть), идем в гугл и последовательно пишем ему несколько запросов (вместо noservice.ru пишите адрес своего блога):

  1. site:noservice.ru replytocom — смотрим, есть ли те самые древовидные комментарии
  2. site:noservice.ru inurl:attachment_id — когда добавляем картинки, для них создается страничка с адресом наш_сайт.ru/?attachment_id=ИД_картинки
  3. site:noservice.ru inurl:m — это страницы отображения контента Вашего блога по дням, месяцам, годам. Тоже источник тот еще…

И понимаем, что дублей-то полно!

Исправляем дубли на блоге

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

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^replytocom= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteRule (.+)/feed /$1 [R=301,L]
RewriteRule (.+)/comment-page /$1 [R=301,L]
RewriteRule (.+)/trackback /$1 [R=301,L]
RewriteRule (.+)/comments /$1 [R=301,L]
RewriteRule (.+)/attachment /$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^attachment_id= [NC]
RewriteCond %{QUERY_STRING} ^m= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Затем сохраняем данный файлик под именем .htaccess и кидаем его в корень сайта. Смысл всего написанного состоит в том, чтобы обеспечить 301 редирект на главную страницу блога со всех «неугодных» страниц, а именно страниц, порождаемых комментариями (?replytocom=), прикрепленными файлами (?attachment_id=) и модулем разбивки контента по датам (?m=).

В обязательном порядке разрешаем (да-да, именно так) роботу при помощи файла robots.txt ходить по всем этим дублям. Для этого формируем примерно такой файл robots.txt:

User-agent: *
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-feed
Disallow: /wp-content/themes
Host: site.ru
Sitemap: http://site.ru/sitemap.xml

User-agent: Googlebot-Image
Allow: /wp-content/uploads/

User-agent: YandexImages
Allow: /wp-content/uploads/

При запрете Гугл в обязательном порядке посетит страницу. Будет примерно как показано здесь (шутка старых добрых лет, кликните по изображению):

ну какая ты свинья ведь написано нельзя

После проведенных мероприятий осталось подождать переиндексации страниц блога поисковыми системами. Я буду ждать вместе с Вами 🙂

Календарь и дубли. Какая связь?

Многие блоггеры, и я в их числе, размещают календарь в одном из сайдбаров блога. Удобно видеть сразу, как давно не писались статьи на блог 🙂 . Те даты, когда были оставлены посты, помечаются ссылками, которые имеют формат… да… все именно так — ваш_сайт.ru/?m=123 . А мы как раз только что устроили данным страницам 301 редирект. Есть два решения проблемы:

  1. Убираем календарь
  2. Убираем ссылки на календаре

Первый вариант мне лично не нравится, календарь — удобная штука на блоге. Второй вариант вроде бы тоже «не айс», так как часть важного функционала календаря убирается, но формально она уже убрана недавними манипуляциями. Дразнить поисковых роботов в формате «а вот вам ссылочка, вот только вы по ней перейдете не туда» ИМХО не стоит. Да и пользователям блога будет непонятно, почему они кликнули по одной ссылке, а перешли на главную страницу. Поэтому пойдем по второму пути. Я использую стандартный вордпрессовский виджет «Календарь». Его «настраивают» в файле /wp-includes/general-template.php . Ищем функцию get_calendar, в ней нам надо кое-что поменять. Нашли? Ищем в ней такие строки:

Как раз первое упоминание переменной $calendar_output — это присвоение ей ссылки. Вот это-то мы и поменяем…

В том же файлике находим другие строки, отвечающие за вывод перехода вперед-назад по месяцам:

Комментируем эти строки, например, так:

Но если мы обновим страницу, то увидим, что теперь те даты, когда мы писали статьи, никак не выделяются! Ну все правильно, мы же тег <a> заменили на <div>. Идем в файл style.css нашего шаблона, например, через админку сайта (Внешний вид -> Редактор -> style.css). Для начала определяем в каком сайдбаре у нас находится календарь. Поскольку у меня он находится в правом, то мне необходимо поправить такой участок кода:

Превращаем его в такие стили:

После данных преобразований ссылки в календаре исчезли, но выделение даты публикации статьи сохранилось.


Оставьте комментарий

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> <img src="" alt="" class="" width="" height="">

http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ab.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ac.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ag.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ah.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ai.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ak.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/am.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/an.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ao.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aq.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ar.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/at.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/av.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aw.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ay.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/az.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bb.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bc.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bd.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/be.gif 
больше...