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;
}