【问题标题】:add_rewrite_rule wordpress with w3 total cacheadd_rewrite_rule wordpress 与 w3 总缓存
【发布时间】:2014-09-24 04:58:54
【问题描述】:

我正在尝试将规则重写为对 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;
}

因为这个sn-p不起作用,我也尝试重写.htaccess规则。

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

我猜这是因为 w3 总缓存。我花了一整夜,但一个人无法弄清楚....

【问题讨论】:

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


    【解决方案1】:

    刷新重写规则——进入设置永久链接并点击“保存”

    【讨论】:

    • 我在哪里可以刷新重写规则?
    • 转到管理部分和永久链接中的设置。如果您重新保存那里的内容,wp 将重置 pl。有 php 可以做到这一点,但它是一次性的,所以最好不要编码它,除非它是一个激活钩子。
    • 我使用了 add_filter 而不是 add_action 并且成功了!!
    【解决方案2】:

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

    我使用 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多