带有w3总缓存的add_rewrite_rule wordpress

时间:2014-08-01 03:52:34

标签: php wordpress .htaccess mod-rewrite url-rewriting

我正在尝试将规则重写为seo友好。 这是我在主题function.php中放入的代码

add_action('init', 'add_my_rewrite_rule');
function add_my_rewrite_rule(){
    add_rewrite_rule('^quiz/([^/]*)/([^/]*)?','index.php?pagename=quiz&quiztitle=$matches[1]&quizid=$matches[2]','top');
}

add_filter('query_vars','set_quiz_query_var');
  function set_quiz_query_var($vars) {
  array_push($vars, 'quiztitle');
  array_push($vars, 'quizid');
  return $vars;
}

由于此代码段不起作用,我还尝试重写.htaccess规则。

RewriteRule ^quiz/([^/]+)/([^/]+)$ /index.php?pagename=quiz&quiztitle=$1&quizid=$2 [NC,R=301,L]

我想这是因为w3总缓存。我花了一整夜但却无法独自解决....

2 个答案:

答案 0 :(得分:0)

刷新重写规则 - 转到设置永久链接并点击"保存"

答案 1 :(得分:0)

很抱歉回答自己!我花了一整天的时间来找出问题。

我使用了add_filter而不是add_action,结果很好。

add_filter('rewrite_rules_array','add_my_rewrite_rule');
function add_my_rewrite_rule($rules)
{
  $newrules = array();
  $newrules['^quiz/([^/]+)/([^/]+)/?'] = 'index.php?pagename=quiz&quiztitle=$matches[1]&quizid=$matches[2]';
  return $newrules + $rules;
}