Kinsta环境下子域名learn到子目录learn的301重定向失败求助
问题排查与解决方案
可能的问题根源
Kinsta预发布站点的内置路由优先级更高
Kinsta的预发布(staging)站点依赖Nginx做反向代理,平台内置的子域名路由规则会优先于.htaccess(Apache配置)执行。默认情况下,learn.XXXX.kinsta.com可能被直接指向主站点根目录,你的.htaccess规则还没生效就被平台规则覆盖了。HTTP协议不匹配导致跳转干扰
你的RewriteRule目标用的是http://,但Kinsta预发布站点默认强制HTTPS访问。用户访问子域名时,会先触发平台的HTTPS强制跳转,直接跳转到主站HTTPS地址,跳过了你的重定向规则。规则执行顺序被其他重写规则覆盖
如果你的站点是WordPress这类CMS,根目录下的默认Rewrite规则(比如WordPress的伪静态规则)可能放在你的重定向规则之前,提前匹配并执行,导致子域名重定向逻辑没机会运行。
对应的解决方法
方法一:用Kinsta后台配置重定向(推荐)
Kinsta提供了原生的重定向管理功能,直接配置Nginx规则,比.htaccess更可靠:
- 登录Kinsta Dashboard,找到你的预发布站点
- 进入Redirects选项卡,添加一条新重定向:
- 来源URL:
learn.XXXX.kinsta.com(勾选「Include all subpaths」) - 目标URL:
https://XXXX.kinsta.com/learn/$1 - 类型选择「301 Permanent」
- 来源URL:
方法二:调整.htaccess规则
如果坚持用.htaccess,做以下修改:
- 把你的子域名重定向规则放在所有其他规则(比如WordPress的规则)最前面,确保优先执行
- 将目标URL改为HTTPS,匹配Kinsta的强制HTTPS设置:
php_value upload_max_filesize 12M php_value post_max_size 13M RewriteEngine On # 子域名重定向规则放在最顶部 RewriteCond %{HTTP_HOST} ^learn\.XXXX\.kinsta\.com$ [NC] RewriteRule ^(.*)$ https://XXXX.kinsta.com/learn/$1 [L,R=301] # 其他站点规则(比如WordPress的)放在下方 # BEGIN WordPress # ... 原有规则 ... # END WordPress - 清除浏览器缓存后测试——301重定向会被浏览器缓存,之前的错误跳转记录可能影响测试结果
方法三:确认子域名绑定配置
检查Kinsta后台的子域名绑定,确保learn.XXXX.kinsta.com确实关联到你的预发布站点,没有被错误指向主站点。
内容的提问来源于stack exchange,提问作者Jillian Hoenig
相关产品推荐
相关产品推荐

