wordpress默认情况下设置固定链接,分类页面是有category路径的。出于SEO优化的考虑,网站的链接层次多,不利于蜘蛛的抓取,也就是说链接越简洁越好,链接的路径越少越好。在百度优化指南中,百度一直是建议站长们使用浅表的层次结构。 下面我们讲解一下中去掉固定链接中的category的方法。 方法1:切换到主题目录,打开functions.php文件,添加如下代码,然后到wordpress后台中设置的地方,点击固定链接,保存即可生效。 extra_permastructs['category']['struct'] = '%category%';
} | flush_rules();
}
// register_deactivation_hook(__FILE__,'no_category_base_deactivate');
// function no_category_base_deactivate() {
// remove_filter('category_rewrite_rules','no_category_base_rewrite_rules');
// // We don't want to insert our custom rules again
// no_category_base_refresh_rules();
// }
// Remove category base
add_action('init','no_category_base_permastruct');
function no_category_base_permastruct() {
global $wp_rewrite,$wp_version;
if (version_compare($wp_version,'3.4','<')) {
// For pre-3.4 support
$wp_rewrite -> extra_permastructs['category'][0] = '%category%';
} else {
$wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
}
}
// Add our custom category rewrite rules
add_filter('category_rewrite_rules','no_category_base_rewrite_rules');
function no_category_base_rewrite_rules($category_rewrite) {
//var_dump($category_rewrite); // For Debugging
$category_rewrite = array();
$categories = get_categories(array('hide_empty' => false));
foreach ($categories as $category) {
$category_nicename = $category -> slug;
if ($category -> parent == $category -> cat_ID)// recursive recursion
$category -> parent = 0;
elseif ($category -> parent != 0)
$category_nicename = get_category_parents($category -> parent,false,'/',true) . $category_nicename;
$category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
}
// Redirect support from Old Category Base
global $wp_rewrite;
$old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
$old_category_base = trim($old_category_base,'/');
$category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
//var_dump($category_rewrite); // For Debugging
return $category_rewrite;
}
// Add 'category_redirect' query variable
add_filter('query_vars','no_category_base_query_vars');
function no_category_base_query_vars($public_query_vars) {
$public_query_vars[] = 'category_redirect';
return $public_query_vars;
}
// Redirect if 'category_redirect' is set
add_filter('request','no_category_base_request');
function no_category_base_request($query_vars) {
//print_r($query_vars); // For Debugging
if (isset($query_vars['category_redirect'])) {
$catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'],'category');
status_header(301);
header("Location: $catlink");
exit();
}
return $query_vars;
}
nicename
nicename
nicename
base
方法3:基于伪静态,主机使用linux系统的用户,可以将带有category的链接重定向至没有它的链接,通过编写.htaccess的301重定向规则
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!