这是WordPress的功能吗?
是的,重定向是由redirect_canonical()
, 但URL由redirect_guess_404_permalink()
:
redirect_guess_404_permalink()
尝试根据queryvars猜测404请求的正确URL。
所以你的情况是,WordPress试图找到一篇book
在slug中(post_name
), 如果找到,WordPress会加载该帖子,而不是显示404错误页面。
如何禁用/更改此功能?
完全禁用redirect_canonical()
(哪个WordPress core钩住了template_redirect
) 如果当前URL路径正好是book
如中所示example.com/book/
和example.com/book?foo=bar
.
例如,您可以使用parse_request
hook 要禁用规范重定向,请执行以下操作:
add_action( \'parse_request\', \'wpse_392546\' );
function wpse_392546( $wp ) {
if ( \'book\' === $wp->request ) {
remove_action( \'template_redirect\', \'redirect_canonical\' );
}
}
或者您可以使用
do_redirect_guess_404_permalink
禁用上述猜测正确URL的尝试。
因此,您可以使用上面选项1中使用的相同挂钩和函数,但替换remove_action()
符合:
add_filter( \'do_redirect_guess_404_permalink\', \'__return_false\' );