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

Laravel部署至public_html子目录(~username路径)时返回404的问题咨询

Laravel部署至public_html子目录(~username路径)时返回404的问题咨询

我之前在类似的大学服务器环境部署Laravel时也碰到过完全一样的问题,其实核心原因有两个:一是APP_URL的作用被你误解了,二是你的.htaccess缺少关键的重写基础路径配置,导致Laravel把~dramosac当成了路由的一部分。下面一步步帮你解决:

先理清楚问题根源

  • APP_URL这个配置主要是给Laravel用来生成外部链接(比如邮件验证链接、静态资源地址)的,它不会告诉Laravel要忽略请求路径里的子目录前缀。
  • 你当前的.htaccess没有设置RewriteBase,Apache会把完整的请求路径(包括~dramosac)直接传给Laravel的public/index.php,所以Laravel会把~dramosac当作一个路由去匹配,自然就返回404了。

具体解决步骤

1. 修正.htaccess文件(最关键的一步)

在public_html目录下的.htaccess里添加RewriteBase /~dramosac/,这个配置会告诉Apache:当前目录对应的URL基础路径是/~dramosac/,它会自动把请求中这个前缀去掉后,再把剩下的路径传给Laravel处理。修改后的.htaccess内容如下:

RewriteEngine On
# 新增这一行,指定当前目录的URL基础路径
RewriteBase /~dramosac/

RewriteRule ^$ public/index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.php [L]

2. 配置Laravel的URL和资源路径

为了让Laravel生成正确的静态资源(CSS、JS、图片)和路由链接,需要在.env文件中补充ASSET_URL配置,同时确保APP_URL是正确的:

APP_URL=https://<university domain>/~dramosac
ASSET_URL=https://<university domain>/~dramosac

3. 清理缓存并验证

完成上面两步后,先清除Laravel的配置缓存(避免旧配置生效):

# 登录SSH后,进入public_html目录执行
php artisan config:clear

然后就可以测试访问了:

  • 访问https://<university domain>/~dramosac应该能正常加载Laravel的根路由页面(比如默认的欢迎页)
  • 访问你定义的路由,比如https://<university domain>/~dramosac/login,应该能正确跳转到对应的页面,而不是404

如果还是有问题,可以排查这几点:

  • 确认大学服务器的Apache已经启用了mod_rewrite模块(通常大学服务器都会开启,若没开需要联系管理员)
  • 检查public目录的文件权限,确保Laravel能读取里面的静态资源
  • 清除浏览器缓存,避免旧的.htaccess规则被缓存

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 09:24:51