问题
有一个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/category和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/category 和 https://example.com/shop
第二个需要重定向到第一个。
答案 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 );