在使用WordPress博客程序搭建网站的时候,WordPress的分类存档是非常重要的页面,在网站树形结构中占据一席位置。但是默认情况下分类页面的URL地址中有一个 <strong class="red">/category/</strong> 目录,这个目录不仅会影响用户体验还会影响网站整体的SEO效果(网站的目录层次越少越利于搜索引擎抓取,也越利于获取更好的排名)。所以为了网站的SEO效果,必须要去掉这个category二级目录,降低目录的深度。那么如何去除wordpress自带的一层category目录呢?
WordPress去除分类目录URL路径中category分类目录前缀的四种办法:
方法一:在后台“固定链接”中设置“分类目录前缀”
登录你的Wordpress后台,打开 “设置 —》固定链接 —》” 页面。在 “可选” 设置项里的 “分类目录前缀” 里输入半角字符: “.” ,如下图所示,保存后即可去掉分类前缀category。
优点:设置简单,老少皆宜。适用于初建成的博客,或刚打算使用固定链接 /永久链接的博客。用不着修改代码,升级之时没有顾虑;用不着插件,不会增加运行负担。
缺点:原链接无法打开,出现404错误。被搜索引擎收录良好,或分类链接有较多外链链入的博客,可要万分小心了。不要因为操作简单、省时省力而损失了大量外链及权重。因为它并没有插件所支持的自动 301 跳转,且原地址仍可以访问。(例如:www.aszhi.com/seo/与www.aszhi.com/category/seo/都是可以访问并且内容完全一样)这会造成谷歌网站管理员工具里提到的,重复的标题。而且这种钻官方代码空子的方法难保会一直有效下去。
方法二:借助Wordpress插件实现
(1)使用 WP No Category Base 插件,在后台插件管理中搜索“WP No Category Base”(如下图所示),然后下载安装。此插件主要是为去除固定链接中分类链接里的category而开发出来的一款wordpress插件。
安装启用此插件后,对原来的分类地址做了301重定向跳转,对SEO优化有好处,把降权风险降到最低。
(2)使用 No category parents 插件,在后台插件管理中搜索“No category parents”,然后下载安装。此插件不仅能去掉分类链接的前缀category,还能去掉父分类parent-category。例如:将“/category/parent-category/my-category/”换成“/my-category/” 。
优点:安装简单,老少皆宜。无论是初建成的博客,还是正打算使用固定链接/永久链接的博客,还是被搜索引擎收录良好的博客。用不着修改代码,升级之时没有顾虑。使用301跳转,把原链接进行跳转。最大程度符合seo优化,防止搜索引擎降权,防止原链接打不开。
不足:插件或许会造成空间负担。这里不说是缺点,就是因为,造成的“空间负担”微乎其微,不应该是缺点。比较在意的就不用,无所谓推荐使用。
方法三:纯代码实现
纯代码去掉WordPress分类目录链接中的category分类标志,也非常简单,只需要将以下代码放在 当前主题的模板函数文件functions.php 文件最后一个?>前面即可。
// 去掉链接中category分类标志 add_action( 'load-themes.php', 'no_category_base_refresh_rules'); add_action('created_category', 'no_category_base_refresh_rules'); add_action('edited_category', 'no_category_base_refresh_rules'); add_action('delete_category', 'no_category_base_refresh_rules'); function no_category_base_refresh_rules() { global $wp_rewrite; $wp_rewrite -> 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 dont 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; }
优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的博客。
缺点:修改代码,博客主题升级还要修改。
关注我们:请关注一下微信号:扫描二维码
版权声明:本文为原创文章,版权归 互联网 所有,欢迎分享本文,转载请保留出处!