При изменении адреса страницы, WordPress сохраняет старый адрес и делает с него редирект на новый

05.11.2016

Собственно, в этом и вся суть, что, если вы измените постоянную ссылку записи, то WordPress сохранит старый url и создаст 301 редирект со старого на новый url.

Вот по этой ссылке я нашел немного информации по этому поводу – link.

Ниже мой вольный перевод сообщений из топика по ссылке выше.

Вопрос от mikkelbreum

Я только что изменил URl одного из своих постов с
http://site.org/session/theme-frameworks-trends-og-standardisering/
на
http://site.org/session/wordpress-themes-mere-end-design/

И сейчас при при переходе по старому URl, меня редиректит на новый. Это, конечно круто! Но это фича WordPress или баг?

Отслеживает ли WP историю URL-адресов, создавая редиректы для старых адресов? Глядя на заголовки ответов, я вижу, что WP использует SEO friendly 301 редирект. Я думал, что мне придется настроить редиректы в своем файле htaccess, поэтому мне интересно знать, как так происходит, что WP сам создает редиректы со старых урлов на новые.

Буду благодарен за любую информацию, о том, как WP это делает.

Ответ от Johannes Pille

Отслеживает ли WP историю URL-адресов, создавая редиректы для старых адресов?

Да, отслеживает. Если вы измените slug записи, WordPress создаст 301 редирект со старого адреса на новый (если сервер позволяет).

Буду благодарен за любую информацию, о том, как WP это делает.

К сожалению, не видел эту функцию должным образом задокументированную в Кодексе, поэтому не могу сказать, какие функции в ядре WP содержат ее и где в ядре она расположена.

Что я могу сказать: предыдущие версии используемых урлов расположены в базе данных в таблице wp_postmeta. Посмотрите _wp_old_slug в колонке meta_key, значение урла будет храниться в колонке meta_value. И если вы не хотите получать редирект при переходе по старой ссылке, то просто удалите значение в колонке meta_value.

Ситуации, когда эта фича WP может оказаться багом – это, когда вы изменили урл записи А или переименовали саму запись А, а потом создаете запись Б с таким же названием какое было ранее у записи А, и тогда при переходе по ссылке записи Б, вас будет редиректить на запись А, потому что в базе данных сохранился редирект старого урла А, который сейчас совпадает с урлом Б, на урл А, если вы понимаете о чем я.

Рекомендую к прочтению:

Комментарии (13) к “При изменении адреса страницы, WordPress сохраняет старый адрес и делает с него редирект на новый”

  • Татьяна

    У меня вопрос по случаю, когда как раз “Ситуации, когда эта фича WP может оказаться багом — это, когда вы изменили урл записи А или переименовали саму запись А, а потом создаете запись Б”..
    Что можно сделать в этом случае??
    Методом проб определила, что достаточно просто изменить адрес постов, например вместо “-” поставить “_”, но.. страниц, созданных “поверх” старых очень много, ок. 200 (( Есть ли какой-то способ попроще исправить мою проблему??
    Заранее признательна!

    Ответить
    • Denis Creative

      “И если вы не хотите получать редирект при переходе по старой ссылке, то просто удалите значение в колонке meta_value.”
      в статье было такое предложение решения проблемы, должно помочь.

      Ответить
  • Татьяна

    Спасибо за ответ и за перевод – по крайней мере помогло понять с чем связана проблема с неработающими ссылками..
    Но я не могу найти в _wp_old_slug те meta_value, которые нужно удалять.. т.е. там почему-то несколько сотен раз указан один и тот же meta_value с разными meta_id и post_id.. только один из 200, которые не работают.
    Прошу прощения за банальность пояснений, я вообще-то с базой не умею работать, начиталась вот решила попробовать разобраться..
    В любом случае спасибо за дельную статью!

    Ответить
  • Андрей

    Здравствуйте! У меня таких редиректов накопилось за 5 лет, 800 штук, если я массово их удалю, сайт не “пошатнется”?

    Ответить
    • Denis Creative

      Если на старые урлы покупались ссылки, то можете в панели Google Search Console обнаружить 404 ошибки, то есть поисковик будет пытаться по старым ссылкам проиндексировать страницы с измененными адресами.
      Вариант 1 – вручную потом с этих 404 сделать редирект на нужные страницы плагином
      Вариант 2 – если не жалко веса ссылок, который уйдет на несуществующие адреса, или если таковых ссылок не было, то просто забить на эти старые адреса.
      Ну это мое мнение.

      Ответить
  • Михаил

    Дружище столкнулся с подобной проблемой. Только редирект на неверную страницу.
    Речь именно о страницах, а не о постах.

    Была страница с адресом /подбор-авто/
    Я изменил её URL на /podbor-avto/

    Я не удалял/создавал страницу, я просто поменял адрес.
    Спустя пару дней обнаружил, что /подбор-авто/ отдаёт код 301, и переадресует на…
    внимание на /подбор-авто-окупается/ — это другая страница, созданная давно.

    То есть, вместо того, чтобы установить 301 на новый URL /podbor-avto/, WP установил редирект на страницу с похожим адресом? Как так?

    Я стал гуглить тему. Нашел информацию про таблице «wp_postmeta», значении «_wp_old_slug» в столбце «meta_key». Думаю, пойду да поменяю руками. Но там не оказалось данных об этих страницах. Там есть две строки данных о ЗАПИСЯХ, не имеющих отношения к искомым страницам.

    Поиском перерыл всю БД: И по id всех участвующих страниц, и по названию — ничего толкового найти не могу.
    В htaccess тоже не появилось записей о редиректе.

    Помоги!

    Стоят плагины.
    Simple Lightbox
    Google XML Sitemaps
    Contact Form 7
    All In One WP Security
    All In One SEO Pack
    Akismet Anti-Spam

    Ответить
    • Denis Creative

      В данном случае рекомендую поставить плагин Simple 301 Redirects.
      И проставить руками 301 редиректы на нужные страницы.

      Ответить
  • Денис

    Здравствуйте,
    есть две страницы, к примеру:

    denis.net/help редирект на denis.net/help/

    Обе индексируются. Как грохнуть первую в WP, чтобы поисковик перестал её видеть? Ну и я тоже…

    Ответить
    • Denis Creative

      Попробуйте зайти в Настройки – Постоянные ссылки и просто нажать “Сохранить изменения”.
      В WordPress должен быть настроен редирект автоматически, но бывают сбои после переноса сайта или обновления движка.

      Ответить
    • Denis Creative

      В настройках Постоянных ссылок оптимальный вариант такой:
      Постоянные ссылки

      Ответить

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