如何在不更改页面的情况下通过更改wp查询从一个页面重定向到另一页面?

时间:2019-05-29 12:53:06

标签: wordpress woocommerce

问题

有一个URL: https://example.com/my-category/category

需要创建另一个 https://example.com/shop

要实现的行为:

通过访问https://example.com/shop的内容,所有查询变量都必须与https://example.com/my-category/category一样

https://example.com/my-category/categoryhttps://example.com/shop-必须相同。 元标记,标题和其他内容必须相同。

需要创建内部重定向

来自https://example.com/shop

https://example.com/my-category/category,而无需重新加载页面。

这是我尝试过的代码段

flush_rewrite_rules(); add_rewrite_rule( '/shop?$', 'index.php?product_cat=my-category', 'top' );

我希望这两个URL可以看到相同的页面

https://example.com/my-category/categoryhttps://example.com/shop

第二个需要重定向到第一个。

2 个答案:

答案 0 :(得分:1)

最简单的方法是编辑.htaccess文件(在服务器上,位于http://example.com的根文件夹中),然后添加301 Redirect,如下所示:

Redirect 301 /shop /my-category/category

这意味着当某人在浏览器中输入http://www.example.com/shop时,它将自动重定向到http://www.example.com/my-category/category,并加载后面的页面。

答案 1 :(得分:0)

我已经通过request过滤器找到了解决方案

function example_rewrite_request($query){
    $request_uri = urldecode( $_SERVER['REQUEST_URI'] );

    $parsed_url = parse_url( $request_uri );

    if (  preg_match( '/^\/shop/', $parsed_url['path'] ) ) {
        $query['product_cat'] = 'my-category';
        unset( $query['post_type'] );

        return $query;
    }

    return $query; 
}

add_filter( 'request', 'example_rewrite_request', 9999, 1 );