我有一个问题,写一个正确的重写规则。
基本上,以下是我想要的url示例:
/myPage/mySuPage
然后分页也一样
/myPage/mySuPage/page/3
然后是基本页面,有2个参数,没有分页
/myPage/mySuPage/param1/param2
然后,有2个参数和分页的/myPage/mySuPage/param1/param2/page/3
或多或少,我让它为每种情况使用不同的规则,但如果我把它们排成一行,什么都不起作用。
以下是我写的规则:
add_rewrite_rule(
\'myPage/mySuPage/([^/]*)/([^/]*)/?\',
\'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]\',
\'top\' );
add_rewrite_rule(
\'myPage/mySuPage/([^/]*)/([^/]*)/page/([0-9]{1,})?\',
\'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]&pageds=$matches[3]\',
\'top\' );
add_rewrite_rule(
\'myPage/mySuPage/(.+?)(/page/([0-9]+))?/?$\',
\'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]\',
\'top\' );
最合适的回答,由SO网友:Jan Fabry 整理而成
前两条重写规则的结尾不是$
, 这表明URL应停止在此处。所以myPage/mySuPage/param1/param2/page/3
仍然会与第一个模式匹配,因为它可以忽略/page/3
在结尾部分。接下来的重写规则将永远不会被使用。
具有my Rewrite analyzer plugin 我能够将您的重写规则简化为以下两个:一个没有参数,只有可选分页,另一个有参数,有可选分页。将这两个参数合并为一个是行不通的,因为可选参数会“吃掉”分页部分。
add_rewrite_rule(
\'myPage/mySuPage(/page/([0-9]+)?)?/?$\',
\'index.php?pagename=myPage/mySuPage&pageds=$matches[2]\',
\'top\'
);
add_rewrite_rule(
\'myPage/mySuPage/([^/]*)/([^/]*)(/page/([0-9]+)?)?/?$\',
\'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]&pageds=$matches[4]\',
\'top\'
);