我有一个WordPress(4.0)网站以及动态创建多个网址的情况。像这样:
/api-page/111/222/
/api-page/aaa/bbb/
我需要指出:
/api-page/?param1=111¶m2=222
/api-page/?param1=aaa¶m2=bbb
因为只存在“api-page”。在“api-page”上我有短代码来处理params。
我知道如何使用htaccess文件重定向网址,但我需要网址保持不变。
我设法在htaccess文件中使用此行掩盖网址:
RewriteRule ^api-page/(.+)/(.+)/$ /api-page/?param1=$1¶m2=$2 [L]
但WordPress会抛出404错误。
如何做到这一点?
答案 0 :(得分:0)
我找到了解决方案。解决方案不使用htaccess。我把这个片段放在主题的function.php文件中:
function api_rw_rules() {
global $wp;
$wp->add_query_var('param1');
$wp->add_query_var('param2');
add_rewrite_rule('api-page/(.+)/(.*)','index.php?pagename=api-page¶m1=$matches[1]¶m2=$matches[2]','top');
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action('init', 'api_rw_rules');
设置重写规则后,可以删除函数中的最后两行
/*
global $wp_rewrite;
$wp_rewrite->flush_rules();
*/
此解决方案的唯一缺点是$ _GET中没有变量。它们可用于get_query_var():
$param1 = get_query_var('param1');
$param2 = get_query_var('param2');