Как отключить автоматическое перенаправление для 404 ошибок и "неправильных" URL?
WordPress имеет функцию, которая автоматически перенаправляет URL-адреса, если считает, что они написаны неправильно. Вот пример: у меня есть страница с названием my-page
Если я перейду по адресу:
www.mysite.com/something/my-page/
он сразу перенаправит меня на
www.mysite.com/my-page/
так как по первому URL ничего не существует.
Как можно отключить эту функцию и вместо этого просто получать ошибку 404, если введены неправильные URL?
Можете объяснить, что это делает? Что такое канонический редирект? Я новичок в WordPress
Yatin Mistry
Есть ли где-то возможность просматривать эти редиректы, чтобы удалять их по одному?
Shane Jones
Это отлично. Вы знаете, почему wp-admin может всё ещё перенаправлять после использования этого?
Gezim
Подробное объяснение этой проблемы можно найти по ссылке https://www.dev4press.com/blog/wordpress/2015/canonical-redirect-problem-and-solutions/
ronnefeldt
Как предложил Ash, вы можете отключить эту функцию с помощью следующего кода:
remove_action('template_redirect', 'redirect_canonical');
Изучив функцию redirect_canonical в файле canonical.php, становится ясно, что вы также можете изменить её поведение с помощью собственного фильтра.
В конце функции redirect_canonical() есть вызов фильтра для финального результата:
$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );
Таким образом, вы можете написать собственный фильтр, чтобы изменить конечный URL перенаправления или вернуть null для остановки перенаправления, основываясь на входных данных, тем самым отключив функцию для конкретного URL или группы URL.
Этот SO показывает больше деталей о том, как добавить фильтр для таких как я, кто немного новичок в WP
PBMe_HikeIt
Вы можете отключить угадывание постоянных ссылок для 404 ошибок, не отключая при этом перенаправление канонических URL, добавив следующую строку в ваш код (например, в functions.php):
add_filter('do_redirect_guess_404_permalink', '__return_false');
Соответствующие функции в коде WordPress — это redirect_canonical и redirect_guess_404_permalink в файле wp-includes/canonical.php.
Интересно, что документация кажется устаревшей, потому что там сказано, что redirect_canonical предназначен как для редиректов на уровне TLD, так и для редиректов 404 ошибок...
Jesse Nickles