WordPress自定义子分类Slug后对应文章无法显示的问题求助
解决WordPress修改子分类Slug后文章无法显示的问题
我来帮你搞定这个头疼的问题!当你把父分类ABC下的子分类PQR的Slug改成John后,文章出现无法访问的情况,基本都是WordPress的固定链接重写规则没跟上,或者缓存在搞鬼。下面是几个一步步就能解决的方案:
1. 先刷新固定链接重写规则(最常用的解决方法)
这是90%的情况下能直接搞定的步骤,操作超简单:
- 登录WordPress后台,进入「设置」→「固定链接」页面
- 不用修改任何现有设置,直接点击页面底部的「保存更改」按钮
- 这个操作会强制WordPress重新生成新的重写规则,更新服务器上的.htaccess文件(如果服务器允许写入的话),让新的分类Slug路径生效
2. 手动检查/更新.htaccess文件(如果第一步没用)
如果刷新固定链接后还是不行,大概率是.htaccess文件没被正确更新,或者权限不足:
- 如果你用的是Apache服务器,找到网站根目录下的
.htaccess文件,确保它有写入权限(一般设置为644即可) - 如果权限没问题但规则没更新,你可以手动替换成WordPress默认的重写规则:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
- 要是你用的是Nginx服务器,需要在站点的Nginx配置文件里确认有正确的重写规则,一般是这行:
try_files $uri $uri/ /index.php?$args;,修改后记得重启Nginx服务
3. 添加旧Slug到新Slug的重定向(可选但推荐)
为了避免之前的旧链接(比如/category/ABC/PQR/post_name)失效,影响用户访问和SEO,最好添加永久重定向:
- 你可以用代码片段实现,把下面的代码添加到当前主题的
functions.php文件里(记得先备份主题文件):
add_action('template_redirect', 'redirect_old_pqr_category'); function redirect_old_pqr_category() { // 匹配旧的分类路径,跳转到新路径 if (preg_match('/^category\/ABC\/PQR\/(.*)$/', $_SERVER['REQUEST_URI'], $matches)) { wp_redirect(home_url('/category/ABC/John/' . $matches[1]), 301); exit; } }
- 或者更简单的方式,安装「Redirection」这类重定向插件,可视化添加旧路径到新路径的301重定向规则
4. 清除所有缓存
如果你的网站用了缓存插件(比如WP Rocket、W3 Total Cache),或者服务器有自带的缓存(比如CDN、服务器端缓存),一定要彻底清除缓存。缓存会保留旧的路径映射,导致新Slug的路径无法被正确识别
内容的提问来源于stack exchange,提问作者Rupesh
相关产品推荐
相关产品推荐

