Как удалить ссылку rel=’shortlink’ из кода сайта на WordPress

У вас сайт на Вордпресс? Вы заменили стандартные URL’ы на ЧПУ? Но поисковики почему-то «кушают» оба урла, а это как ни как дубли. Для тех кто не знает, самое неприятное в дублях — это то, что их можно назвать внутренним плагиатом, дело в том, что CMS WordPress, как и другие популярные системы управления сайтами (например, Joomla), не редко производит дубликаты оригинальных страниц, то есть произвольно, без участия пользователя создается страница идентичная оригиналу, но доступная при этом по другому адресу.
В моем случае, я рассматривая вот такой вариант:
- https://samsebewebmaster.ru/?p=320
- https://samsebewebmaster.ru/samouchitel-wordpress/shortlink-wordpress.html
По двум эти адресам доступна эта самая статья, которую вы читаете. Но у меня настроен редирект и первый адрес не должен попадать ни в руки пользователей интернета, ни в «лапы» поисковых систем. Не должен, а каким-то не понятным способом и ЯндексВебмастер, и Инструменты для вебмастеров Google его обнаруживают.
Вот, скриншот из Я.Вебмастера по этому сайту:
Как видно от недостатка дублей этот сайт не страдает. В чем может быть причина? Я немного недоумевал, но посидев, подумав, понял — рас редирект не спасает, значит WordPress где-то в HTML-коде страницы размещает ссылку именно с такими адресами — /?p=111, /?p=125 и т.д. И как оказалось я был прав. Это подтверждалось даже Я.Вебмастером:
На скрине видно, что эти ссылки являются внутренними, то есть находятся в коде сайта. У меня возникло 3 вопроса:
- Что это за ссылка на не нужный мне дубликат?
- Как ее обнаружить?
- Как от нее избавится?
Ответ на 2-ой вопрос очевиден: необходимо просто провести поиск по ссылке (например, samsebewebmaster.ru/?p=320) в коде сайта.
Ответ на первый вопрос 1: после того, как я провел поиск по коду сайта я обнаружил ссылку вот такого вида:
<link rel=’shortlink‘ href=’samsebewebmaster.ru/?p=111′ />
Ответ № 3: здесь пришлось немного попотеть. Погуглив я нашел несколько сайтов, на которых было три разных совета. Следуя первому совету удалялось совсем не то, по крайней мере у меня ссылка shortlink в коде сайта сохранялась; второй совет реализовывался с помощью специальной функции, которую необходимо было вставить в файл functions.php сайта, почему-то он у меня не сработал. Следуя совету номер 3, я таки удалил эту ненавистную ссылку.
Именно этим советом я и поделюсь с вами.
Проверяем сайт на наличие ссылки rel=’shortlink‘ и удаляем ее
Небольшая инструкция для тех кто не знает, как найти нужные или не нужные ссылки в коде сайта? Вообще этим способом можно найти в структуре вашего или чужого сайта практически всё: ссылки, тэги, атрибуты, просто текст и т.д.
Инструкция по нахождению ссылки rel=’shortlink‘, за подопытного выступает весьма популярный блог на WP:
- откройте любую статью вашего блога, а именно страницу или запись, у главной страницы ссылки rel=’shortlink‘ не бывает.
- нажмите правую кнопку мышки и в появившемся меню выберите «Просмотр кода страницы»:
Откроется новая страница с исходным кодом статьи, которая называется так: view-sourse:адрес страницы. Обратите внимание, что я использую браузер Google Хром, в других браузерах данное меню будет выглядеть несколько по-другому.
- В исходном коде нам необходимо найти ссылку rel=’shortlink‘, для этого на странице view-sourse нажмите в сочетании две клавиши Ctrl+F. В появившемся окне справа наверху ведите слово shortlink:
Как видите на скриншоте, с помощью кода найдена 1 ссылка shortlink.
- Переходим к коду сайта, искомую фразу браузеры обычно выделяют и окно перемещается к ней.
Итак, если вы обнаружили у себя такую ссылку, то ее необходимо удалить.
Как видите я нашел shortlink ссылки на блоге Ирины Зайцевой, а данный ресурс ежедневно посещают более 10 тысяч пользователей. Выходит, что дубли shortlink не так уж и сильно влияют на поисковое продвижение.
Лучший способ удалить rel=’shortlink‘ с сайта на WordPress
Чтобы удалить ненавистную ссылку shortlink необходимо поправить файл link-template.php. Он находится в папке wp-includes, которая в свою очередь находится в корневой папке сайта. Открыть файл link-template.php через админку WP не удастся, поэтому необходимо будет подключится по FTP клиенту (например, FileZilla) или через файловый менеджер хостинга.
После того, как открыли необходимый файл ищем в нем вот такую строку (используем клавиши Ctrl+F):
function wp_shortlink_header
Вот скриншот подсказка:
Красной скобочкой я отметил функцию, которая отвечает за вывод ссылки rel=’shortlink‘. Этот самый код и необходимо удалить. Вот привожу наглядный пример кода, который необходимо удалить:
/**
* Send a Link: rel=shortlink header if a shortlink is defined for the current page.
*
* Attached to the wp action.
*
* @since 3.0.0
*/
function wp_shortlink_header() {
if ( headers_sent() )
return;$shortlink = wp_get_shortlink(0, ‘query’);
if ( empty($shortlink) )
return;header(‘Link: <‘ . $shortlink . ‘>; rel=shortlink’, false);
}
Несмотря на всю простоту данный способ имеет один минус — при обновление WordPress, если новый патч затронет файл link-template.php, не нужная ссылка может восстановится. Например, я уже несколько раз обновлял свой сайт, но только в одном случае ссылка снова появилась в коде сайта. Если знаете какой-либо другой способ, то укажите пожалуйста в комментариях.
После удаления ссылки rel=’shortlink‘ из исключенных страниц в Яндекс.Вебмастере пропали все не угодные мне ссылки.
Обновление от 05.11.2015: проще всего удалить Shortlink ссылку с помощью плагина WordPress SEO by Yoast.
В 2016 году этот фокус уже не действует. Файл class-wp-hook.php использует эту функцию и ждет результата. В плагине эта настройка тоже пропала.