如何移除WordPress分类链接中的“category”字样?
移除WordPress分类链接中的“category”字样并解决404错误
方法一:正确设置固定链接+刷新重写规则
- 进入后台设置→固定链接:
- 自定义结构保持为
/%category%/%postname%/(或你当前使用的自定义结构) - 分类基础(Category Base)直接留空,不要填写任何字符(包括点号)
- 自定义结构保持为
- 点击保存更改,这一步会自动触发WordPress更新重写规则,若服务器权限正常,会同步修改根目录的
.htaccess文件
方法二:手动修复.htaccess文件(若第一步后仍404)
如果保存固定链接后.htaccess未自动更新,手动操作:
- 登录服务器文件管理器,找到网站根目录的
.htaccess文件 - 替换为以下Apache兼容的规则:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
- 将
.htaccess权限设置为644,确保WordPress具备读写权限
方法三:无冲突的代码实现(替代原有代码)
若偏好代码方式,替换你之前的函数,这个版本更严谨,避免与页面、自定义文章类型冲突:
function remove_category_base($url) { return str_replace('/category/', '/', $url); } add_filter('category_link', 'remove_category_base'); function add_category_rewrite_rules($rules) { $new_rules = array(); $categories = get_categories(array('hide_empty' => false)); foreach ($categories as $category) { $category_nicename = $category->slug; $new_rules[$category_nicename.'/?$'] = 'index.php?category_name='.$category_nicename; $new_rules[$category_nicename.'/page/([0-9]+)/?$'] = 'index.php?category_name='.$category_nicename.'&paged=$1'; } return $new_rules + $rules; } add_filter('rewrite_rules_array', 'add_category_rewrite_rules'); function flush_rewrite_rules_on_activation() { flush_rewrite_rules(); } register_activation_hook(__FILE__, 'flush_rewrite_rules_on_activation');
- 将代码添加到主题的
functions.php文件或自定义插件中 - 添加完成后,进入后台设置→固定链接点击保存,强制刷新重写规则
额外注意事项
- 若使用Nginx服务器,需在Nginx配置文件中添加对应重写规则,替代Apache的
.htaccess:
location / { try_files $uri $uri/ /index.php?$args; }
- 暂时禁用其他SEO、重写类插件测试,排查是否存在规则冲突
- 若网站静态页面的slug与分类slug重复,会导致404,需修改其中一方的slug
内容的提问来源于stack exchange,提问作者Diana Hakobyan
相关产品推荐
相关产品推荐

