WordPress子文件夹HTTP访问被错误重定向到根域名HTTPS如何解决?
问题根源
子目录下.htaccess中Really Simple SSL自动生成的HTTP转HTTPS规则存在逻辑错误:RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]里的/$1会强制将路径重置到站点根目录,导致子文件夹路径丢失。
修复步骤
1. 修改子文件夹下的.htaccess规则
将子目录.htaccess中#BEGIN ReallySimpleSSL段的代码替换为以下内容:
#BEGIN ReallySimpleSSL <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on [NC] # 直接使用原始请求完整路径,不会丢失子目录 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> #END ReallySimpleSSL # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /subfolder/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /subfolder/index.php [L] </IfModule> # END WordPress
2. 修复根目录.htaccess语法错误
你提供的根目录.htaccess末尾存在多余的</IfModule>闭合标签,删除该行即可,避免规则解析异常。修改后的根目录.htaccess参考:
<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>
3. 确认WordPress站点地址配置
登录子站点WordPress后台,进入「设置」-「常规」页,确认两个地址配置正确:
- WordPress地址(URL):
https://www.example.com/subfolder - 站点地址(URL):
https://www.example.com/subfolder
4. 缓存清理与测试
301是永久重定向,会被浏览器长期缓存,修改完成后需完全清除浏览器缓存,或使用隐私窗口访问http://www.example.com/subfolder验证跳转效果。
注意事项
后续如果在Really Simple SSL插件内执行重新配置操作,插件可能会覆盖你自定义的重定向规则,建议将HTTPS重定向代码移到#BEGIN ReallySimpleSSL注释块之外,避免被自动覆盖。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

