Убираем link rel=shortlink из заголовка ответа сервера WP


2013-02-05

Юрий Макаров

После перехода на CMS WordPress 3+ вылезло несколько неприятных для SEO моментов. Один из них - это отдача сервером заголовка link (рисунок 1).
Заголовок link-shortlink

Рисунок 1. Отдача сервером заголовка LINK

Как видим в ответе сервера присутствует лишний заголовок. Который не то, что не нужен, он еще и может вредить продвижению сайта. Уберём его. Для этого заходим на FTP и ищем wp-includes/link-template.php. Открываем данный файл и ищем код:

 

/**
* Send a Link: rel=shortlink header if a shortlink is defined for the current page.
*
* Attached to the wp action.
*
* @since 3.0.0
*
* @uses wp_get_shortlink()
*/
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. Поэтому, если у Вас есть идеи, как реализовать отключение данной функции function wp_shortlink_header на постоянной основе, буду рад увидеть соответствующие комментарии к данной статье.

19 коммент. к записи "Убираем link rel=shortlink из заголовка ответа сервера WP"
  1. Ной :

    Добавь в function.php темы:
    remove_action( ‘wp_head’, ‘wp_shortlink_wp_head’, 10, 0 );

  2. Юрий Макаров :

    Привет, спасибо за дополнение! Про это я знаю, но, к сожалению, оно поможет убрать link rel=shortlink только из html кода (раздела head), а у нас речь идет о заголовке ответа сервера. Поэтому только такой метод как я написал пока что работает.

  3. Простой :

    Чего-то этот метод не работает.

  4. Юрий Макаров :

    метод 100% работает. Если, что непонятно, как его сделать — спрашивайте

  5. Простой :

    Если удалить этот код из файла, то выводится вот чего:
    Parse error: syntax error, unexpected $end in…и так далее.

  6. Юрий Макаров :

    Простой, удалите, пожалуйста, только

    header(‘Link: < ’ . $shortlink . ‘>; rel=shortlink’, false)

    из кода. Судя по всему — метод удаления полностью всего кода работает не у всех сайтов.

    Удаление, же только

    header(‘Link: < ’ . $shortlink . ‘>; rel=shortlink’, false)

    должно решить проблему. Если Вам также это поможет — отпишитесь, пожалуйста, я после этого изменю статью

  7. Простой :

    Если удалить только: header(‘Link: ; rel=shortlink’, false);
    то это никак не сказывается. То есть ссылка ?p= по прежнему выводится.

  8. Юрий Макаров :

    На самом деле странно… Второй способ должен помочь… У вас должен остаться такой код —

    function wp_shortlink_header() {
    if ( headers_sent() )
    return;

    $shortlink = wp_get_shortlink(0, ‘query’);

    if ( empty($shortlink) )
    return;

    }

    Кэш в браузере чистили?

    Если не помогает, и если не сложно, вышлите мне файл, в котором вы удалили часть кода на yumw@mail.ru — я посмотрю правильно Вы это сделали.

  9. Простой :

    Кэш чистил. Сейчас пришлю.

  10. Юрий Макаров :

    Файл посмотрел. Но в нем я не обнаружил функцию:
    function wp_shortlink_header()

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

  11. Простой :

    Спасибо.

  12. Простой :

    Не понятно зачем программисты wp вообще такое допускают.

  13. Юрий Макаров :

    Я тоже не понимаю зачем они вставляют эти лишние ответы серверов и т.д. Надо придумать, как убрать этот ответ, чтобы не было страшно делать обновления WP.

  14. Вадим :

    У меня там вообще нет такого файла

  15. Save :

    Странно, у меня автоматом не работает =) Может из-за плагинов…

    А идея была просто закомментить //header(‘Link: ; rel=shortlink’, false);

  16. Corben Dalas :

    Юрий удаляю этот код с файла, но выдает ошибку в файле plugin.php, версия вп 3,6…Может вы знаете в чем тут дело?

  17. west :

    Код убрал, шотлинк остался.

  18. wetrow77 :

    Доброго времени суток!
    подскажите, пожалуйста, где искать, если отсутствует link-template.php

  19. Барак Обама :

    в функтион.пшп
    remove_action( ‘template_redirect’, ‘wp_shortlink_header’, 11 );
    робит

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *