Custom Params in URL

时间:2019-02-20 作者:Matt Egginton

以下是我当前正在使用的URL:

www.Mysite.com?b=ex%2021
我想我可以在中添加一些规则。htaccess文件,因此我添加了以下内容:

RewriteEngine On
RewriteRule /b/(.*)/$ index.php?b=$1
当我访问www.Mysite时。com/b/ex1/I被转发到首页,在玩了一段时间后,我发现要么出现错误404,要么重定向到主页,这取决于我如何设置规则。

我想这是行不通的,因为这个Wordpress正在接管和搞乱事情,所以我开始研究如何用WP的方式来实现这一点,并从我发现的一些代码示例中尝试了这一点:

// rewrite
add_filter( \'query_vars\', \'addnew_query_vars\', 10, 1 );
function addnew_query_vars($vars)
{   
    $vars[] = \'b\';    
    return $vars;
}
function custom_rewrite_basic() 
{
add_rewrite_rule(\'b/(.*)/\', \'b/?b=$1\', \'top\');
}
add_action(\'init\', \'custom_rewrite_basic\');
但我找不到页面。。。我已经更新/清除了页面规则。这两种方法都有效吗?我的代码是否有错?

编辑:感谢您的帮助,我已经更新了问题以显示新的重写规则。我已经尝试了多个正则表达式,我相信上面的方法应该可以奏效。如果我键入我的URL。找不到com/b/ex2/i get页。如果我键入我的URL。com/b/22/似乎有效所以我尝试了(a-zA-Z0-9),得到了404。我上面发布的代码按照我在regex验证器中的需要进行验证。

1 个回复
SO网友:MikeNGarrett

重写规则中的正则表达式,([0-9]+), 将与查询字符串不匹配ex%2021. 尝试?b=21 看看这是否有效。

此外,新的重写规则要求刷新重写规则。你可以用两种方法中的一种。任一呼叫flush_rewrite_rules(); 或者转到“设置”>“永久链接”,然后单击“保存”。

请注意,您DO NOT 希望flush_rewrite_rules(); 要在实时站点上调用,请在完成开发后将其删除。