WordPress试图通过帖子名称猜测用户想要看到的帖子。这就是两者的原因example.com/new-bikes/ktm/duke/ktm-690-duke-2012/
和example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/
返回相同且“正确”的内容。
重要的是,如果您看到example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/
, 您可以看到将规范URL正确设置为example.com/new-bikes/ktm/duke/ktm-690-duke-2012/
. 用户得到他想要的东西,搜索引擎知道标准URL,所以每个人都赢了。
所以,我不建议强制执行404错误example.com/new-bikes/ktm/yamaha/ktm-690-duke-2012/
我认为你不应该为此担心。
无论如何,如果您真的想避免该URL,我会将用户重定向到带有301状态码的规范URL,而不是强制使用404:
add_action( \'template_redirect\', \'cyb_canonical_redirect\' );
function cyb_canonical_redirect() {
global $wp;
if( is_singular() ) {
$id = get_queried_object_id();
$canonical_url = get_permalink( $id );
$current_request = site_url( $wp->request );
// Compare current request and canonical url
if( $canonical_url != $current_request) {
wp_redirect( $canonical_url, 301 );
exit();
}
}
}