好的,所以在我们开始使用regex(除了数字)之前,让我们快速看看您的所有模式:
add_rewrite_rule(
\'page-a/page-b/([0-9]+)/?$\',
\'index.php?pagename=page-b&var1=$matches[1]\',
\'top\' );
此规则首先添加到列表的顶部。这意味着它将被这3条规则中的最后一条处理。这条规则看起来像是做了你想做的事。
add_rewrite_rule(
\'page-a/page-b/([0-9]+)/([0-9]+)/?$\',
\'index.php?pagename=page-bs&var1=$matches[1]&var2=$matches[2]\',
\'top\' );
此规则是(这三条规则中的)第二条规则。这个规则的模式看起来很棒,然而,它重写的url看起来也有输入错误。改变
pagename=page-bs
到
pagename=page-b
, 除非您的页面名为
page-bs
在您的网站上。
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\' );
最后,首先处理此规则(这3条规则中的一条)。此规则的重写看起来不错,但您的模式似乎有输入错误。改变
\'page-a/page-b([0-9]+)/([0-9]+)/([0-9]+)/?$\'
到
\'page-a/page-b/([0-9]+)/([0-9]+)/([0-9]+)/?$\'
(您在第b页后错过了一个正斜杠)。
现在,在纠正了这些错误之后,我们应该根据斜杠的数量(在本例中是查询变量)重写到正确的规则。请记住,Regex在拼写错误和确保模式正确时非常挑剔。看起来你的规则顺序也很正确。
现在,如果我们想匹配除数字以外的任何东西,我们需要在正则表达式模式中指定这一点。通常,在重写URL时,我们希望匹配数字、小写字母、大写字母和连字符。为此,我们需要更改([0-9]+)
到([0-9a-zA-Z-]+)
.
下面是一个示例URL及其对应的模式:URL:www.example。com/page-a/page-b/my-cool-new-slug-12/my-cool-new-subslug-11/重写规则:
add_rewrite_rule(
\'page-a/page-b/([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)/?$\',
\'index.php?pagename=page-b&var1=$matches[1]&var2=$matches[2]\',
\'top\' );
应为重写的URL:www.example。com/索引。php?pagename=第b页(&;var1=my-cool-new-slug-12和;var2=my-cool-new-subslug-11
希望有帮助!
如果你有任何问题,请告诉我。