Вопрос или проблема
Я только что изменил URL одного из своих постов с
http://2011.denmark.wordcamp.org/session/theme-frameworks-trends-og-standardisering/
на
http://2011.denmark.wordcamp.org/session/wordpress-themes-mere-end-design/
Теперь, если я перехожу по старому URL, меня перенаправляет на новый. Это, конечно, здорово!
…Но это особенность WordPress или что тут происходит?
Отслеживает ли WP историю URL постов, предоставляя перезаписи/перенаправления для прежних URL?
Смотрю на заголовок ответа и вижу, что WP отправляет SEO-дружественное перенаправление 301… Да!?
Я думал, что мне придется настраивать эти перенаправления с помощью правил переписывания в моем .htaccess
, так что мне интересно узнать, как это происходит, что WP дает мне мой новый URL, когда я ввожу старый.
Буду признателен за любую информацию о том, как WP это обрабатывает.
Отслеживает ли WP историю URL постов, предоставляя перезаписи/перенаправления для прежних URL?
Да, отслеживает. Если вы изменяете слуг поста, WordPress перенаправляет старый на новый URL (если ваша серверная конфигурация это позволяет).
Буду признателен за любую информацию о том, как WP это обрабатывает.
К сожалению, я никогда не видел, чтобы эта функция была должным образом задокументирована в codex. Поэтому я не могу сказать вам, какая функция ядра WP это делает и где в ядре она расположена.
Однако я могу сказать следующее: Ранее используемые слуги хранятся в базе данных в таблице wp_postmeta. Проверьте наличие _wp_old_slug в колонке meta_key (фактические слуги хранятся в колонке meta_value). Таким образом, если вы когда-либо захотите, чтобы это поведение по умолчанию не происходило в конкретном случае, здесь нужно удалить значение.
Чаще всего эта функция очень полезна. Однако она может дать сбой, когда вы переименовываете пост, а затем создаете новый пост с таким же названием, какое у другого было ранее.
По крайней мере, с текущим WordPress (v6.7) функция wp_old_slug_redirect
вызывается на хуке ‘template_redirect’.
Тем не менее, она работает только с “неиерархическими” типами постов, а значит, не для страниц!
Ответ или решение
Да, WordPress на самом деле отслеживает историю URL-адресов постов и предоставляет автоматические редиректы для ранее использованных URL. Когда вы изменяете ярлык (slug) поста, система автоматически создает перенаправление 301 с старого URL на новый. Это функция разработана для повышения удобства пользователей и улучшения SEO.
Как это работает?
Когда вы изменяете URL поста:
-
Автоматическое перенаправление: WordPress использует функцию
wp_old_slug_redirect
, которая срабатывает на хукеtemplate_redirect
. Это означает, что во время обработки запроса к вашему сайту WordPress проверяет, есть ли старый URL для поста. Если да, то система отправляет ответ с кодом 301, который указывает браузерам и поисковым системам, что содержимое перемещено на новый URL. -
Хранение старых ярлыков: Старые ярлыки хранятся в базе данных в таблице
wp_postmeta
. Конкретно, информация о старом ярлыке сохраняется под мета-ключом_wp_old_slug
. Таким образом, если вы захотите отменить автоматическое перенаправление для конкретного случая, вы можете удалить соответствующее значение из этой таблицы.
Важно отметить
-
Эта функция предоставляет особенно ценную помощь, когда старые ссылки могут быть все еще в использовании, например, в социальных сетях или других веб-сайтах. Благодаря автоматическим редиректам, пользователи, переходя по старым URL, автоматически окажутся на обновленных страницах, что уменьшает риск потери трафика и улучшает пользовательский опыт.
-
Однако, если вы решите создать новый пост с тем же именем, которое уже использовалось у старого поста, могут возникнуть конфликты. Это может привести к нежелательным последствиям, таким как неправильное перенаправление.
Настройка серверов
Следует отметить, что для корректной работы автоматических перенаправлений требуется, чтобы серверная конфигурация позволяла WordPress взаимодействовать с перенаправлениями. В некоторых случаях может потребоваться дополнительная настройка, например, изменения в файле .htaccess
. Однако в большинстве случаевWordPress сам справляется с этими переносами, что делает его удобным инструментом для управления контентом.
Заключение
Функция отслеживания URL-истории и автоматических редиректов в WordPress — это мощный инструмент для поддержания целостности вашего сайта и обеспечения плавного опыта для пользователей. Эта функция позволяет минимизировать затраты времени на обслуживание сайтов, улучшает SEO-позиции и предоставляет пользователям возможность без труда находить обновлённый контент.