.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
相关产品推荐
相关产品推荐

