问题背景
在默认情况下,WordPress 会在分类(Category)的 URL 结构中自动添加 category
作为前缀,例如:
https://nextaiedge.com/category/[blog]
对于 SEO 友好的 URL 结构,我们希望去掉 category
这个层级,使 URL 变成:
https://nextaiedge.com/[blog]
然而,WordPress 默认不支持去掉 category
层级,因此需要手动修改规则或使用插件来实现。
常见错误方法
有些会尝试修改 固定链接
设置,希望能移除 category
,但即使在分类前缀中留空,WordPress 仍然会自动添加 category
层级。

部分用户通过 .htaccess
添加 301 重定向规则,例如:
RewriteRule ^category/(.+)$ /$1 [L,R=301]
虽然这种方法可以让 URL 看起来去掉了 category
,但本质上只是做了重定向,并没有真正修改 WordPress 的 URL 生成规则。从seo的角度来讲,可以一步到位的就不需要做301,属于备选方案。

有效解决方案
方法 1:使用插件(最简单)
最简单的方法是使用 Remove Category URL
插件,它能直接移除 category
层级,无需 301 重定向。
步骤
- 进入 WordPress 后台 → 插件 → 安装插件
- 搜索插件:No Category Base(WPML)
- 安装并启用插件
- 清除缓存(LiteSpeed Cache / Cloudflare)
- 访问分类 URL,检查是否已去掉
category
✅ 优点:简单快捷,适合不懂代码的用户 ❌ 缺点:需要安装额外的插件

方法 2:修改 functions.php(代码方式,无需插件)
如果你不想依赖插件,可以直接修改 functions.php
,让 WordPress 直接生成不带 category
的 URL。
步骤
- 进入 WordPress 后台 → 外观 → 主题文件编辑器

- 找到
functions.php
,在文件末尾添加以下代码:
// 移除 category URL 层级
add_filter('category_link', 'remove_category_slug', 10, 2);
function remove_category_slug($catlink, $category_id) {
$category = get_category($category_id);
if ($category->parent == 0) {
$catlink = str_replace('/category/', '/', $catlink);
}
return $catlink;
}
// 重写规则,让 WordPress 识别没有 category 的 URL
add_action('init', 'no_category_base_rewrite_rules');
function no_category_base_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->extra_permastructs['category']['struct'] = '%category%';
}
- 保存
functions.php
- 进入 WordPress 后台 → 设置 → 固定链接
- 点击“保存更改”(不修改内容,点击保存即可刷新规则)
- 清除缓存,测试分类 URL
✅ 优点:
- 直接修改 WordPress URL 生成逻辑,不做 301 重定向
- 不依赖插件,避免额外插件带来的安全隐患
❌ 缺点:
- 需要手动添加代码,不适合小白用户
方法 3:使用 .htaccess
(不推荐)
如果你只是想让旧的 category
结构自动跳转到新的 URL,而不修改 WordPress 生成的 URL 方式,可以在 .htaccess
里添加以下规则:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# 让分类 URL 不包含 category
RewriteCond %{REQUEST_URI} ^/category/(.+)$
RewriteRule ^category/(.+)$ /$1 [R=301,L]
# WordPress 规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
但这并没有真正去掉 category
,只是做了 301 跳转,因此 不推荐。
✅ 优点:
- 适用于已有大量
category
目录的旧站,防止 404 错误
❌ 缺点:
- 只是跳转,不是去掉
category
,新文章仍然会生成category/
结构
总结:最优方案推荐
方法 | 适合用户 | 是否真正去掉 category | 难度 |
---|---|---|---|
插件:Remove Category URL | 小白 | ✅ 是 | ⭐⭐⭐⭐(简单) |
修改 functions.php | 代码熟练者 | ✅ 是 | ⭐⭐⭐(需手动添加代码) |
.htaccess 301 跳转 | 旧站 SEO 保护 | ❌ 只是跳转 | ⭐(简单但不推荐) |
如果你想 最简单地去掉 category
层级,推荐 方法 1(插件)。
如果你不想安装插件,推荐 方法 2(代码修改)。
如果你只想做 301 重定向,推荐 方法 3(.htaccess)。
如果你每种方式尝试起来都觉得不稳妥,可以自己建个站,把对应项测试好,再做复用。