Wordpress将多个网址屏蔽到单个页面

时间:2014-11-24 19:36:37

标签: wordpress .htaccess

我有一个WordPress(4.0)网站以及动态创建多个网址的情况。像这样:

/api-page/111/222/
/api-page/aaa/bbb/

我需要指出:

/api-page/?param1=111&param2=222
/api-page/?param1=aaa&param2=bbb

因为只存在“api-page”。在“api-page”上我有短代码来处理params。

我知道如何使用htaccess文件重定向网址,但我需要网址保持不变。

我设法在htaccess文件中使用此行掩盖网址:

RewriteRule ^api-page/(.+)/(.+)/$ /api-page/?param1=$1&param2=$2 [L]

但WordPress会抛出404错误。

如何做到这一点?

1 个答案:

答案 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&param1=$matches[1]&param2=$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');