WP的内置固定链接的URL重写设置,可以使URL更加美观,同时一定程度有利于搜索引擎收录,遇到一个需求,需要两个URL分别指向同一文章页,当然我是极力反对的,两个地址指向同一内容,会造成重复内容,实际上是不利于SEO的, 于是我建议采用301重定向减少一些副作用,探讨了在技术上实现, 一个是使用WP默认的固定链接%post_id%-%postname%的形式,别一个是直接使用%post_id%,要兼容后者,需要对WP的重写规则进行一些处理:

// 修改重写规则,使http://域名/8848 指向 http://域名?p=8848,同时使用301

add_action( 'wp_loaded','mings_flush_rules' );
add_filter( 'rewrite_rules_array','mings_insert_rewrite_rules' );
function mings_flush_rules(){
      $rules = get_option( 'rewrite_rules' );
      global $wp_rewrite;
      if($wp_rewrite->using_permalinks() && preg_match('#/([0-9]{1,})/?$#',$_SERVER['REQUEST_URI'],$matches)){
          wp_redirect("/?p=$matches[1]",301);
          exit();
      }
      !isset($rules[$rules['([0-9]{1,})/?$']]) && $wp_rewrite->flush_rules();
 }
  
function mings_insert_rewrite_rules( $rules ){    
      
      $newrules = array();
      $newrules['([0-9]{1,})/?$'] ='index.php?p=$matches[1]';
      return $newrules + $rules;
  }

- EOF -

评论

加载中