WordPress子目录部署URL返回异常 跳转丢失父级目录路径
WordPress部署在子目录时路径丢失、自动跳根目录修复方案
第一步:先硬编码站点地址解决登录跳转问题
如果现在连后台都进不去,直接改子目录下的wp-config.php文件,在文件开头的<?php标记下方添加两行配置,这两个配置优先级高于数据库存储值,改完立即生效:
define('WP_HOME', 'https://example.com/example'); define('WP_SITEURL', 'https://example.com/example');
注意:配置的地址末尾不要加斜杠,否则会出现路径双斜杠的拼接错误。添加完成后用浏览器无痕模式访问
https://example.com/example/wp-login.php,基本可以解决登录页自动跳根目录的问题。
第二步:修正Web服务器重写规则
如果改完地址配置后,内页、静态资源还是丢失子目录路径,优先检查重写规则是否写死了根目录:
- 若使用Apache主机:打开子目录
/example下的.htaccess文件,将默认WordPress重写规则替换为以下内容,重点确认RewriteBase和最后一条重写规则携带子目录前缀:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /example/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /example/index.php [L] </IfModule> # END WordPress
- 若使用Nginx主机:修改站点对应的server配置块,为子目录添加正确的路由规则,修改完成后执行配置重载命令生效:
location /example { try_files $uri $uri/ /example/index.php?$args; }
- 若使用IIS主机:修改子目录下的
web.config文件,将重写规则的根路径替换为/example/子目录路径即可。
第三步:清理缓存与残留错误路径
- 能正常登录后台后,先进入「设置-常规」页面,确认站点地址、WordPress地址均为带
/example的正确值,哪怕值看起来正确也点击一次「保存更改」,会自动触发WordPress刷新重写规则。 - 全量清理缓存:包括服务器端缓存、WordPress缓存插件生成的缓存、CDN缓存,以及本地浏览器缓存,之前的跳转如果是301永久重定向,普通刷新会优先读本地缓存,必须清缓存或者用无痕模式测试。
- 排查数据库残留旧地址:如果部分文章、静态资源还在引用根目录路径,用数据库搜索替换工具,将库中所有
https://example.com/的错误地址批量替换为https://example.com/example/,操作前务必备份数据库。
第四步:特殊场景排查
如果以上操作都做完还是有问题,逐一核对以下配置:
- 检查是否配置了反向代理、CDN回源规则,确认规则没有在转发时丢弃
/example子目录路径 - 检查当前启用主题的
functions.php文件、自定义插件文件中是否硬编码了根目录路径常量 - 检查是否有安全插件、跳转插件配置了强制跳转到根目录的规则
内容的提问来源于stack exchange,提问作者geeth
相关产品推荐
相关产品推荐

