WordPress add_rewrite_rule 404错误

时间:2016-09-30 12:12:21

标签: php wordpress

我正在为自定义项目添加rewrite_rules。

我能够让它们在某种程度上起作用,但有一些困难。

这是我到目前为止所尝试的内容

public function add_query_vars($vars) {
   $vars[] = 'gallery';
   $vars[] = 'project';
   $vars[] = 'palbum';
   return $vars;
}
public function add_endpoint() {
   add_rewrite_rule('^gallery/([^/]*)/([^/]*)?','index.php?gallery=true&project=$matches[1]&palbum=$matches[2]','top');
}

这里的项目是父母和palbum都是它的孩子。

它似乎在mysite.com/gallery/my-project-name/my-album-name正常工作 (这些页面是显示单张专辑)

但它在mysite.com/gallery/my-project-name给出了404错误 (这些页面用于显示项目所属的所有专辑)

有什么线索?

1 个答案:

答案 0 :(得分:0)

根据您的重写规则,需要用于项目和palbum的部分才能应用重写规则。如果您稍微修改规则,它将与您要查找的内容相匹配:

public function add_endpoint() {
    /**
     *
     * Matches:
     * http://example.com/gallery/my-project-name/my-album-name/
     * http://example.com/gallery/my-project-name/my-album-name
     * http://example.com/gallery/my-project-name/
     * http://example.com/gallery/my-project-name
     */
    add_rewrite_rule('^gallery/([^/]+)/?(.*?)/?$','index.php?gallery=true&project=$matches[1]&palbum=$matches[2]','top');
}

创建一个测试以针对您要检查的任何其他迭代运行 - https://www.regex101.com/r/f54odP/1