WordPress        05 февраля 2013

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

После перехода на 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 комментариев
  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 не будет опубликован. Обязательные поля помечены *