我正在使用URL重写,如下所示:unexpected problem in url rewrite
它工作没有任何问题,但当我尝试对嵌套页面使用相同的规则时,它不起作用。我有两页page-a
和page-b
. page-a
是的父级page-b
. 现在我想捕获传递的变量。URL结构将为:
page-a/page-b/
page-a/page-b/var1/
page-a/page-b/var1/var2/
page-a/page-b/var1/var2/var3/
所以,我制定了三条规则。完整代码如下:add_filter( \'query_vars\', \'wpse26388_query_vars\' );
function wpse26388_query_vars( $query_vars ){
$query_vars[] = \'var1\';
$query_vars[] = \'var2\';
$query_vars[] = \'var3\';
return $query_vars;
}
function wpse26388_rewrites_init(){
add_rewrite_rule(
\'page-a/page-b/([0-9]+)/?$\',
\'index.php?pagename=page-b&var1=$matches[1]\',
\'top\' );
add_rewrite_rule(
\'page-a/page-b/([0-9]+)/([0-9]+)/?$\',
\'index.php?pagename=page-b&var1=$matches[1]&var2=$matches[2]\',
\'top\' );
add_rewrite_rule(
\'page-a/page-b/([0-9]+)/([0-9]+)/([0-9]+)/?$\',
\'index.php?pagename=page-b&var1=$matches[1]&var2=$matches[2]&var3=$matches[3]\',
\'top\' );
}
add_action( \'init\', \'wpse26388_rewrites_init\' );
我正在使用重写分析器,变量得到正确的regex值。现在,当我转到带有如下参数的页面时page-a/page-b/10/20
, 参数将自动截断。get_query_var(\'var1\')
什么都得不到。因此,如果我传递1、2或3参数,它将始终重定向到page-a/page-b/
.有人能告诉我我做错了什么吗?
我知道这个正则表达式捕捉数字。但我需要正则表达式,以便以后的任何事情page-a/page-b/
将由查询变量捕获。我也希望有人能帮我。