Url 在 Wordpress 中重写

Url rewrite in Wordpress

我基本上有这个url: http://localhost:8888/wordpress/products/?cat=cards

应该是:http://localhost:8888/wordpress/products/cards

我对 Wordpress 和 url 重写还很陌生,但我找到了一些示例,显然你可以使用类似这样的 php 函数来做到这一点,现在我的问题是重写什么规则是否考虑到 Wordpress 已经用 /products/ 重写了 url,所以这让我对重写规则感到困惑,有什么提示吗?

function add_my_var($public_query_vars) {
    $public_query_vars[] = 'cat';
    return $public_query_vars;
}

add_filter('query_vars', 'cat');

function do_rewrite() {
    add_rewrite_rule('products/([^/]+)/?$', 'index.php?products=products&cat=$matches[1]','top');
}

add_action('init', 'do_rewrite');

如果你看一下 https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

它实际上并没有进行重定向。您可以将 url 解析为 wordpress 查询变量。所以当你去 http://localhost:8888/wordpress/products/cards it will be the same as if you went to http://localhost:8888/wordpress/products/?cat=cards

如你所愿。如果你去 http://localhost:8888/wordpress/products/cards 你应该可以在 wordpress $wp->query_vars

中访问猫

这听起来像您对 http://localhost:8888/wordpress/products/?cat=cards 重定向到 http://localhost:8888/wordpress/products/cards 的期望不一样。