Как предотвратить автоматическое перенаправление?


16

Wordpress имеет функцию, благодаря которой он автоматически перенаправляет ваши URL-адреса, если считает, что они написаны неправильно. Вот пример: у меня есть страница под названиемmy-page

Если я пойду к:

www.mysite.com/something/my-page/

он сразу же перенаправит меня на

www.mysite.com/my-page/

так как ничего не существует на первом URL.

Как я могу отключить эту функцию, и вместо этого просто получить 404, если введены неправильные URL?


Если вы наблюдаете, что происходит (через HttpFox, WireShark или аналогичный анализатор пакетов), эти страницы перенаправляются с помощью статуса 301 - перемещено навсегда - что является подходящим поведением. Это помогает поисковым системам поддерживать свои базы данных в актуальном состоянии, а также перенаправление помогает пользователям находить страницы. Это может повлиять на то, как WordPress обрабатывает вещи, когда вы действительно перемещаете страницу или меняете постоянную ссылку, поэтому будьте осторожны. В любом случае, ваш выбор, но я не уверен, что это хорошая идея.
s_ha_dum

Я знаю, что это хорошо, я понимаю это. Тем не менее, у меня есть конкретный случай использования, когда мне не нужно такое поведение. Я разрабатываю плагин, который обрабатывает перенаправление URL, и поэтому я хочу переопределить это поведение.
Мазатек

Вот более правильный ответ: ссылка
Бинод - GoFundMonica

Ответы:


23

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

remove_action('template_redirect', 'redirect_canonical');

Можете ли вы вести меня за то, что он будет делать? что такое канонический редирект? Я новичок в
WordPress

Вы только что спасли меня от многих головных болей! Спасибо ! :-D
Дженски

1
Нет ли где-нибудь, где мы можем видеть эти перенаправления, чтобы мы могли удалить их один за другим?
Шейн Джонс

Это круто. Знаете ли вы, почему wp-adminпосле этого может быть перенаправление?
Гезим

Вы можете найти подробное объяснение этого вопроса на dev4press.com/blog/wordpress/2015/...
Ronnefeldt

5

Как предположил Эш, вы можете отключить эту функцию, используя следующий код:

remove_action('template_redirect', 'redirect_canonical');

Если посмотреть на функцию redirect_canonical в canonical.php, то вы можете изменить поведение с помощью своего собственного фильтра.

В конце функции redirect_canonical () есть вызов для фильтрации окончательного ответа:

$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

Таким образом, вы можете написать свой собственный фильтр для изменения окончательного перенаправления или вернуть нулевое значение, чтобы остановить перенаправление на основе ввода, тем самым отключив функцию для определенного URL-адреса или подмножества URL-адресов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.