Удаление перенаправления после изменения ЧПУ (slug) страницы

8 апр. 2015 г., 16:36:52
Просмотры: 37.8K
Голосов: 10

На одной из моих страниц я изменил ЧПУ (slug) для формирования другого URL. Например:

Старый: http://example.com/old-slug

Новый: http://example.com/new-slug

WordPress сделал свое дело, перенаправляя http://example.com/old-slug на http://example.com/new-slug.

Я хотел бы убрать это поведение, так как плагин, который я использую, работает с этим ЧПУ, и перенаправление мешает его работе.

Я проверил этот вопрос и проверил таблицу wp_postmeta на наличие записей _wp_old_slug, но ничего не найдено. Мой сервер работает на Nginx, поэтому на него не должны влиять файлы .htaccess.

Есть ли что-нибудь еще, что я могу сделать для удаления этого перенаправления?

1
Комментарии

Кажется странным, что в вашей таблице wp_postmeta нет ключей _wp_old_slug - часть кода, которая это делает, находится в wp-includes/query.php (wp_old_slug_redirect()) - вы можете добавить exit или отладочное выражение там, чтобы проверить, вызывается ли это. Также помните, что если WordPress не может найти постоянную ссылку, он ищет записи, которые соответствуют началу, например, если у вас была запись с названием /foobar, то /foo перенаправит на неё.

William Turrell William Turrell
8 апр. 2015 г. 17:11:23
Все ответы на вопрос 5
3

Этот код (в вашем functions.php) отключит эту функцию (но также обратите внимание на оставленный мной комментарий):

remove_action('template_redirect', 'wp_old_slug_redirect');

Странно, что в вашей таблице wp_postmeta нет ключей _wp_old_slug - часть кода, которая это делает, находится в wp-includes/query.php (функция wp_old_slug_redirect()) - вы можете добавить там exit или отладочное сообщение, чтобы проверить, вызывается ли она.

Также помните, что если WordPress не может найти постоянную ссылку, он ищет записи с совпадающим началом, например, если у вас была запись с постоянной ссылкой /foobar, то /foo перенаправит на неё.

8 апр. 2015 г. 17:14:30
Комментарии

Не могли бы вы добавить ваш комментарий в ответ, чтобы расширить его и собрать весь контент в одном месте?

Howdy_McGee Howdy_McGee
8 апр. 2015 г. 17:16:55

Действительно, ваш комментарий был решением. У меня есть страница под названием Events, у которой был slug events-page. Ни одна страница не имела slug events, но при посещении example.com/events происходил редирект на страницу Events. Очевидно, WP сопоставлял slug со страницей, имеющей такое же название, так как ничего другого для этого не существовало.

harryg harryg
8 апр. 2015 г. 18:21:25

не сработало у меня

zEn feeLo zEn feeLo
2 апр. 2019 г. 20:15:38
2

это сработало для меня:

   remove_filter('template_redirect', 'redirect_canonical');  

источник: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/

2 февр. 2017 г. 09:17:17
Комментарии

у меня не сработало

zEn feeLo zEn feeLo
2 апр. 2019 г. 20:15:47

Потрясающе, что в WordPress это включено по умолчанию

111 111
24 февр. 2020 г. 00:40:56
3

Для ручного удаления автоматических редиректов после изменения слага (URL) просто удалите соответствующие строки из таблицы "wp-redirection-items" в базе данных через phpMyAdmin.

Это самый простой и эффективный способ, который позволяет удалить редиректы для конкретных записей.

2 мар. 2017 г. 14:00:12
Комментарии

Как вы узнали, что автор вопроса использует именно этот плагин?

fuxia fuxia
2 мар. 2017 г. 15:57:31

ваша ссылка не работает

zEn feeLo zEn feeLo
2 апр. 2019 г. 20:16:10

Похоже, что таблицы с именем wp-redirection-items не существует

Flimm Flimm
20 мая 2024 г. 15:23:52
2

Каждая запись в WordPress имеет свой собственный ярлык (slug), который автоматически генерируется из заголовка записи. Если вы решите изменить ярлык записи позже, WordPress запомнит старый вариант и будет перенаправлять его на новый. Можно предотвратить перенаправление старых ярлыков записей в WordPress, удалив пару действий из ядра WordPress с помощью небольшого сниппета.

Просто добавьте следующий код в файл functions.php вашей текущей темы, чтобы WordPress не перенаправлял старые ярлыки записей на новые:

remove_action( 'template_redirect', 'wp_old_slug_redirect'); 
remove_action( 'post_updated',      'wp_check_for_changed_slugs', 12, 3 );
18 дек. 2018 г. 07:50:10
Комментарии

как это влияет на SEO?

zEn feeLo zEn feeLo
2 апр. 2019 г. 19:54:47

Я добавил эти строки, но это не работает

zEn feeLo zEn feeLo
2 апр. 2019 г. 19:58:03
2

Мне помог сброс постоянных ссылок. Просто зайдите в Настройки -> Постоянные ссылки, выберите вариант "По умолчанию", нажмите Сохранить изменения. Затем снова выберите нужную структуру и нажмите Сохранить изменения еще раз.

12 июн. 2015 г. 14:00:03
Комментарии

не работаетаааа

zEn feeLo zEn feeLo
2 апр. 2019 г. 20:13:07

Это сработало для меня! Спасибо.

wlarcheveque wlarcheveque
4 апр. 2022 г. 22:05:35