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

Laravel旧子域名重定向至新子域名时public路径冗余问题排查

解决Laravel旧子域名重定向到新子域名时带public的问题

原因分析

你的旧子域名服务器配置大概率仍将文档根目录指向Laravel项目的根目录(而非public文件夹),当访问旧域名根路径时,服务器默认加载public/index.php,导致RewriteRule捕获到的路径是public,最终重定向到新域名的/public路径。而新域名的文档根目录已经指向public,该路径自然不存在,引发404错误。

修复方案

修改旧子域名下的.htaccess规则,确保重定向时剥离public前缀,或者针对不同路径做精准重定向:

方案1:自动去除public前缀的通用重定向

RewriteEngine On
# 若请求路径包含public,重定向到新域名时自动去掉该前缀
RewriteRule ^public/(.*)$ https://new.website.com/$1 [R=301,L]
# 其他所有请求直接映射到新域名的对应路径
RewriteRule ^(.*)$ https://new.website.com/$1 [R=301,L]

方案2:针对根路径单独处理

RewriteEngine On
# 单独处理根路径请求,直接跳转至新域名根目录
RewriteRule ^$ https://new.website.com/ [R=301,L]
# 所有子路径请求保持原路径跳转
RewriteRule ^(.*)$ https://new.website.com/$1 [R=301,L]

额外建议

  1. 调整旧子域名配置:如果旧项目文件已无需保留,可直接将旧子域名的文档根目录也指向新域名的public文件夹,从根源避免路径混淆。
  2. 验证重定向结果:用curl -I https://old.website.com和curl -I https://old.website.com/login测试,确认跳转后的URL不含public且返回301状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:55:27