为什么
我认为
a) domain.com/123
未重定向回
b) domain.com/123/post-slug
使用
/%post_id%/%postname%/
permalinks设置,匹配的规则是:
[matched_rule] => ([0-9]+)(/[0-9]+)?/?$
你可以从全球
$wp
对象
中还有其他有用的信息$wp
在wp
措施:
示例(post):domain.com/123/post-slug/
[query_vars] => Array
(
[p] => 123
[page] =>
[name] => post-slug
)
[query_string] => p=123&name=post-slug
[request] => 123/post-slug
[matched_rule] => ([0-9]+)/([^/]+)(/[0-9]+)?/?$
[matched_query] => p=123&name=post-slug&page=
[did_permalink] => 1
示例(post):
domain.com/123/
:
[query_vars] => Array
(
[p] => 123
[page] =>
)
[query_string] => p=123
[request] => 123
[matched_rule] => ([0-9]+)(/[0-9]+)?/?$
[matched_query] => p=123&page=
[did_permalink] => 1
示例(第页):
domain.com/hello-world/
:
[query_vars] => Array
(
[page] =>
[pagename] => hello-world
)
[query_string] => pagename=hello-world
[request] => hello-world
[matched_rule] => (.?.+?)(/[0-9]+)?/?$
[matched_query] => pagename=hello-world&page=
[did_permalink] => 1
重定向示例:下面是一个如何从
a) 到
b) 使用来自全球的信息
$wp
对象:
add_action( \'wp\', function(){
global $wp;
if( is_numeric( $wp->request ) && empty( $wp->query_vars[\'page\'] ) )
{
wp_redirect( get_permalink( absint( $wp->request ) ), 301 );
exit();
}
});
即,当未设置页面查询变量且请求为数字时,我们重定向。
ps:我只想提一下,这是使用wp
行动,这是发射相当晚,但之前template_redirect
操作,允许重定向。
我还试图想出一个不使用$_SERVER
变量;-)
希望这有帮助。