Laravel项目主域名指定目录加载后URL跳转异常求助
解决方案
修改根目录下的.htaccess文件,添加重定向规则拦截对/main/public的直接访问,同时保留原有内部转发逻辑:
# 1. 拦截直接访问 /main/public 的请求,重定向回主域名对应路径 RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC] RewriteRule ^main/public/(.*)$ /$1 [R=301,L] # 2. 原有内部转发规则:将主域名请求转发到 /main/public RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/main/ [NC] RewriteRule ^(.*)$ /main/public/$1 [L]
规则说明
- 第一条规则:当用户直接访问
example.com/main/public/xxx时,会通过301永久重定向到example.com/xxx,强制URL显示为主域名形式。 - 第二条规则:保持原有逻辑,将主域名的请求内部转发到Laravel的
public目录,不改变URL。
问题根源补充
长时间打开标签后URL自动变为/main/public,大概率是Laravel生成的部分链接(比如静态资源、路由链接)直接使用了/main/public作为基础路径,导致浏览器跳转后暴露真实路径。配合上面的重定向规则,即使生成这类链接,用户访问时也会被自动拉回主域名。
另外建议检查Laravel项目config/app.php中的APP_URL配置,确保设置为https://example.com(根据实际协议调整),让Laravel默认生成主域名形式的链接,从根源减少这类问题。
内容的提问来源于stack exchange,提问作者user25934652
相关产品推荐
相关产品推荐

