Решение проблемы с All in One Seo Pack и ужасным тегом canonical : )

AIOSP

Привет, друзья IdeaFox!

Думаю, уже все прочитали статью Александра Борисова про ужасы All in One Seo Pack : ) Все переехали на Platinum Seo Pack? Если нет, то прочтите эту заметку до конца, так как я расскажу о своем решении этой проблемы, без удаления AIOSP.

Тема действительно очень серьезная, и каждый из вас может получить неприятности, если вовремя не подсуетится.

Мы обсуждали эту напасть с Александром еще летом. Я сразу озадачился, и стал терзать разработчиков письмами с просьбой устранить этот баг.

Общался я с Питером Бэйлисом, который является одним из разработчиков плагина All In One Seo Pack:

piter baylies

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

letter14

Именно поэтому я даю свое решение этой проблемы

Чтобы не переписывать суть проблемы, советую внимательно ознакомиться со статьей Александра. Уверен, что большинство из вас ее прочли, ну а те, кто не в курсе, добро пожаловать в ночной кошмар автономного блогера: )

http://isif-life.ru/blogovedenie/platinum-seo-pack-pravilnaya-nastrojka.html

Если без шуток, то прочтите ее.  Саша рассказал про эту штуку летом, и подсказал одно хитрое решение (см. вариант №1 в статье).

Но я не стал спешить менять плагин, так как есть парочка “но”, которые тоже нужно учитывать, о чем написал ниже.

Александр какое-то время спасался на старой версии AIOSP, и тестировал другие решения, а я в это время писал разработчикам AIOSP : )

Итак, почему я не стал удалять All in One Seo Pack?

1. Плагин Platinum Seo давно не обновляется

плагин платинум сео

Как видите, больше года обновлений нет. Что наводит на грустные мысли. Совсем непонятно, как поведет себя Платинум при дальнейшем обновлении WordPress.

На данный момент официально поддерживается версия ВордПресс 3.6.1. Актуальная же версия  ВП= 4,0.

2. Если Вы мигрируете на Platinum Seo, то обратно на AIOSP переехать не получится

Точнее, получится, но описания статей (description, title, key words) будут потерты, или заменены на генерированный контент из статей. Придется все снова прописывать ручками. Если статей много, то это адский труд.

Да и как к этому отнесутся поисковые системы трудно сказать.

3. AIOSP развивается, и разработчики хотя бы чинят баги : )

Без иронии, Питер Бэйлис отвечал очень быстро, что радует.

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

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

Итак, приступим:

Для того, чтобы устранить проблему с тегом canonical нужно сделать следующее:

1. Пройти в настройки плагина AIOSP  и нажать на галочку

настройка плагина

No Pagination for Canonical URLs:

В старых релизах плагина AOISP этой фичи нет. Но появилась после бурной переписки с Питером : )

Теперь смотрите, что получается. Показываю на своем тестовом блоге win4blog.ru :

Я прошел на страницу и добавил пару цифр на конце URL

тест страницы сайта

Смотрим на исходный код этой страницы:

удаляем тег rel

Второй тег canonical показывает на исходную страницу, что уже значительно снижает риски образования дублей страниц.

Нам нужно убрать записи вида, которая указывает на страницу, которой нет в действительности win4blog.ru/info/87

<link rel=‘prev’ href=’http://win4blog.ru/info/87′ />

Дело в том, что мы получаем ссылку на несуществующую страницу, которая опять дает возможность расплодить дубли (в теории). Лучше убрать из кода страницы теги вида:

<link rel='prev' href='http://____________________/>
<link rel='next' href='http://____________________/>

Как это сделать?

Первый вариант:

Можно пройти в каталог плагина Алл ин Сео и найти файл aioseop_class.php

Этот файл расположен по адресу:

wp-content/plugins/all-in-one-seo-pack

Открываем файл в редакторе и находим следующие строки:

if ( !empty( $prev ) ) $meta_string .= "<link rel='prev' href='" . esc_url( $prev ) . "' />\n";
if ( !empty( $next ) ) $meta_string .= "<link rel='next' href='" . esc_url( $next ) . "' />\n";

Их можно удалить или закомментировать следующим образом:

/*if ( !empty( $prev ) ) $meta_string .= "<link rel='prev' href='" . esc_url( $prev ) . "' />\n";*/
 /* if ( !empty( $next ) ) $meta_string .= "<link rel='next' href='" . esc_url( $next ) . "' />\n";*/

Чтобы было нагляднее, показываю на скриншоте:

aioseop_class.php

Так было

aioseop_class.php редактируем файл

Комментируем эти две строки и сохраняем файл.

Смотрим опять код страницы:

проверка кода

Противные строки : ) вида

<link rel=’prev’ href=’http://____________________/>

<link rel=’next’ href=’http://____________________/>

Исчезли.

Но в этом решении есть большой минус. После каждого обновления All in One Seo Pack придется возвращаться к файлу, и снова удалять или закомментировать эти две строки кода. Согласитесь, что это плохая идея.

Поэтому попробуйте второй вариант

Сами разработчики рекомендую сделать такой финт ушами  вот на этой странице:

https://wordpress.org/support/topic/removing-link-relprev-and-link-relnext-using-all-in-one-seo

решение проблемы

Нужно сделать очень простую вещь:

1. Идем в админку сайта по пути “Внешний Вид” –> “Редактор”

меню админки

и открываем файл functions.php для редактирования

functions

И сразу после строки <?php вставляем две строки:

add_filter('aioseop_prev_link', '__return_empty_string' );
 add_filter('aioseop_next_link', '__return_empty_string' );

functions.php меняем код

Сохраняем файл, обновляем подопытную страницу.

Опять проверяем, и убеждаемся, что мерзкие строки вида:

<link rel=’prev’ href=’http://____________________/>

<link rel=’next’ href=’http://____________________/>

исчезли из кода страницы.

Второй способ хорош тем, что он работает на уровне шаблона, и при каждом обновлении AIOSP не нужно ковыряться в недрах сайта. Но, подчеркну, что на некоторых хитрых шаблонах этот способ может не сработать.

И последний штрих

Можно еще подстраховаться, и прописать редирект для страниц, которые имею на конце URL цифры. Способ работает, если на конце URL прописано .html

Достаточно добавить одну строкe в файл .htaccess

RewriteRule (.*)\.html\/([0-9]+)$ $1.html [R=301,L]

добавим редирект

Это штука позволяет перебрасывать со страницы с цифрами на конце, на основную страницу.

Например, если ввести адрес:

http://win4blog.ru/newpost.html/788888

то вас перебросит на

http://win4blog.ru/newpost.html

То есть, на основную страницу статьи.

Вот такие дела, товарищи автономные блогеры : )

Когда этот чертов ВордПесс начнет нормально работать? А разработчики плагинов делать нормальные продукты?

P.S. Если последуете этому совету, то обязательно проверьте потом свой сайт. Может быть, вылезут еще какие-нибудь баги, но у меня вроде все нормально. Если что-то вылезет, пишите в комментах и вместе начнем троллить Питера Бэйлиса : )

Советую прочитать:

  1. Простой лайфхак для улучшения поведенческих факторов на сайте
  2. BenchMark–любопытный сервис рассылок для начинающих блогеров, и куда девать неактивную базу подписчиков?