如何为传递多个查询变量的子页构建动态重写规则

时间:2020-07-27 作者:mmeehan

我收到一个404错误

        parent-page/any-child-page/?var1=x&var2=y&var3=z
这就是我目前的情况:

我想让规则覆盖所有子页面

        add_rewrite_rule(\'^project-centers/(.+)/(.+)/(.+)/(.+)/?$\', \'index.php?pagename=$matches[1]&var1=$matches[2]&var2=$matches[3]&var3=$matches[4]\',\'top\');
我可以使用以下方法获取无需重写规则的值:/project-centers/kitchen/?var1=x&var2=y&var3=z

以下是查询var\\u转储:

array(67) {
  ["pagename"]=>
  string(7) "kitchen"
  ["project_name"]=>
  string(7) "kitchen"
  ["var1"]=>
  string(1) "x"
  ["var2"]=>
  string(1) "y"
  ["var3"]=>
  string(1) "z"
  ["error"]=>
...

我错过了什么?

1 个回复
SO网友:mozboz

首先要检查的是确保您访问permalinks页面,或者致电flush_rewrite_rules 调用add\\u rewrite\\u rules后,函数将执行一次,否则将无法应用该规则。

所以,重申一下你的问题,你是否正试图改写以下内容:

example.com/project-centers/kitchen/x/y/z
为此:

eample.com/index.php?pagename=kitchen&var1=x&var2=y&var3=z
如果这是正确的,您的代码看起来应该可以工作,但如果不是,您应该尝试这样编写重写规则:

add_rewrite_rule(
    \'^project-centers/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$\', 
    \'index.php?pagename=$matches[1]&var1=$matches[2]&var2=$matches[3]&var3=$matches[4]\',
    \'top\'
);
这一更改是为了让regex明白,它永远不应该与/ 在任何匹配的字符串中,否则它很容易做到这一点,事情就会变得复杂。

Remember to either visit the permalinks page, or call the flush_rewrite_rules function once (not on every page load) after you call add_rewrite_rules otherwise the rule will not get applied!

如果有帮助,请告诉我

相关推荐

Fixing external image urls

我的图片目前已外部链接到我的博客帐户。通过PowerPress导入所有内容后,它导入了我的所有图像,如下所示:<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https://1.bp.blogspot.com/-YrjQLYBicjE/Wl19tTXO1mI/AAAAAAAAneY/ulQf9voxKGo0CTZFb4Xi96Lk0mFS2purwCLcBGAs/s1600/95D