Regex WordPress-使用多个参数重写规则
我正在设置一个WordPress页面,它通常会接受两个querystring参数。我们的主机更喜欢使用重写规则而不是查询字符串,所以我不得不采用这种方法 所以我通常会这样做: domain.com/animal page.php?animal=dog&color=brown 我必须这样做: domain.com/animal page/animal/dog/color/brown 我遇到的问题是第二个querystring参数是可选的 这样的重写规则不起作用:Regex WordPress-使用多个参数重写规则,regex,wordpress,url-rewriting,Regex,Wordpress,Url Rewriting,我正在设置一个WordPress页面,它通常会接受两个querystring参数。我们的主机更喜欢使用重写规则而不是查询字符串,所以我不得不采用这种方法 所以我通常会这样做: domain.com/animal page.php?animal=dog&color=brown 我必须这样做: domain.com/animal page/animal/dog/color/brown 我遇到的问题是第二个querystring参数是可选的 这样的重写规则不起作用: add_rewrite_rule(
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/color/([\w+]*)',
'index.php?pagename=$matches[1]&animal=$matches[2]&color=$matches[3]',
'top'
);
…因为如果URL中没有颜色参数(这是可能的),则该正则表达式将失败
我还尝试在正则表达式中选择查询参数(颜色)和值(棕色),但仍然不起作用:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)(\/color\/?)([\w+]*)',
'index.php?pagename=$matches[1]animal=$matches[2]&$matches[3]=$matches[4]',
'top'
)
我的问题是:有没有办法使第二个查询参数成为可选的?如果URL中没有“color”参数,我希望页面能够做出适当的反应
谢谢,在这种情况下,您需要制定两条单独的规则:
add_rewrite_rule(
'([\-\w+]*)/animal/([\w+]*)/?$',
'index.php?pagename=$matches[1]&animal=$matches[2]',
'top'
);
及