Собственно, в этом и вся суть, что, если вы измените постоянную ссылку записи, то 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 – если не жалко веса ссылок, который уйдет на несуществующие адреса, или если таковых ссылок не было, то просто забить на эти старые адреса.
Ну это мое мнение.
Андрей
А если не удалять, это как то негативно влияет в целом на сайт?
Denis Creative
Уверен, что нет.
Андрей
Денис, благодарю за ответ!
Михаил
Дружище столкнулся с подобной проблемой. Только редирект на неверную страницу.
Речь именно о страницах, а не о постах.
Была страница с адресом /подбор-авто/
Я изменил её 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
В настройках Постоянных ссылок оптимальный вариант такой:
