You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess未将根级请求重定向至子目录的技术问题求助

解决WordPress迁移到子目录后根级请求未重定向的问题

我来帮你搞定这个问题!这是把WordPress从根目录迁移到子目录后很常见的小坑,咱们一步步来修复:

1. 先确认WordPress后台核心设置(关键步骤!)

首先登录你的WordPress后台(可以通过 example.com/my_subdir/wp-admin 访问):

  • 进入「设置」→「常规」页面
  • 把**WordPress地址(URL)**设置为:https://example.com/my_subdir(这是WP核心文件实际存放的路径)
  • 把**站点地址(URL)**设置为:https://example.com(这是用户访问的对外域名)
  • 点击「保存更改」,这一步是让WordPress明确知道自己的文件位置和对外展示的域名

2. 配置根目录的.htaccess文件

打开public_html根目录下的.htaccess文件,替换成以下规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# 直接放行index.php请求
RewriteRule ^index\.php$ - [L]

# 仅当请求的文件/目录不存在时,将请求转发到子目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_subdir/$1 [L]
</IfModule>
# END WordPress

这段规则的作用是:所有根域名的请求,如果对应的文件或目录不存在(比如首页、文章页这些动态路由),就自动转发到子目录处理,同时保持浏览器地址栏显示的是根域名。

3. 检查子目录的.htaccess文件

打开public_html/my_subdir下的.htaccess,确保它是WordPress默认的路由规则,内容应该如下:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my_subdir/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my_subdir/index.php [L]
</IfModule>
# END WordPress

这个文件负责子目录内部的WordPress permalink路由,确保文章、页面的友好链接能正常工作。

4. 清理缓存避免干扰

  • 如果你的WordPress安装了缓存插件(比如WP Rocket、W3 Total Cache),务必清空插件缓存
  • 同时清理浏览器缓存,或者用无痕模式测试,避免旧的缓存规则影响结果

5. 测试验证

完成以上步骤后:

  • 访问example.com,应该正常加载子目录的内容,地址栏保持example.com
  • 访问具体页面(比如example.com/contact),也应该正常显示,不会跳转到example.com/my_subdir/contact

内容的提问来源于stack exchange,提问作者user2809299

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:02:53