Hostinger上Laravel应用的主域名与子域名路径问题咨询
问题解答
1. 主域名路径是否正确?
正确。Hostinger的域名目录结构默认就是/home/[用户名]/domains/[主域名],你通过删除默认public_html并将其软链到Laravel项目的public文件夹,且主站运行正常,说明该部署路径和方式完全符合Laravel在Hostinger上的最佳实践,没有问题。
2. 子域名默认路径放置测试分支是否正确?
完全错误,这是导致403错误的核心原因:
- 你主域名的
public_html已经是软链指向主项目的public文件夹,将测试分支克隆到public_html/test,相当于把完整的Laravel项目放在了主站的Web根目录下。Web服务器会尝试读取test文件夹下的内容,但找不到直接的入口文件index.php(因为测试分支的入口在test/public/index.php),因此返回403权限错误。 - 另外,这种放置方式会导致主站和测试分支的文件互相干扰,绝对不可取。
3. 创建子域名独立目录出现500错误的原因?
你在/home/u778081280/domains/test.mydomain.com目录部署后出现500,通常是以下几个操作失误导致:
- 未正确配置子域名根目录:Hostinger面板创建子域名时,需要将根目录明确指向测试分支的
public文件夹(即/home/u778081280/domains/test.mydomain.com/public),而不是指向项目根目录。如果直接指向项目根,服务器找不到入口文件会触发500。 - 权限配置错误:Laravel的
storage、bootstrap/cache文件夹需要可写入权限,若权限设置为755(或未将文件所有者设为服务器运行用户,Hostinger通常为nobody或www-data),会导致框架无法写入缓存或日志,触发500。 - .htaccess语法错误:如果自行修改
public/.htaccess时出现语法错误(比如规则写错、符号不匹配),会直接导致服务器返回500。 - 环境变量未配置:未复制
.env.example生成.env文件,或未设置正确的APP_KEY(未运行php artisan key:generate),会导致Laravel核心功能无法运行,触发500。
4. 正确的子域名部署步骤与路径
正确路径结构
子域名的项目根目录应为:/home/u778081280/domains/test.mydomain.com,Web服务器根目录需指向该目录下的public文件夹。
具体操作步骤
- 在Hostinger面板创建子域名
test.mydomain.com,设置其文档根目录为/home/u778081280/domains/test.mydomain.com/public。 - 通过SSH登录服务器,克隆测试分支到目标目录:
git clone -b [测试分支名] [仓库地址] /home/u778081280/domains/test.mydomain.com - 复制环境变量模板并配置:
需设置正确的数据库连接、cp .env.example .env nano .envAPP_URL=http://test.mydomain.com等参数。 - 生成应用密钥并缓存配置:
php artisan key:generate php artisan config:cache php artisan route:cache - 设置正确的文件夹权限:
chmod -R 755 /home/u778081280/domains/test.mydomain.com chmod -R 775 storage bootstrap/cache - 安装生产环境依赖:
composer install --no-dev --optimize-autoloader - 若有前端资源,确保已本地执行
npm run prod并推送至测试分支,或在服务器上完成前端构建(若Hostinger允许安装Node.js)。
内容的提问来源于stack exchange,提问作者Davide Lobascio
相关产品推荐
相关产品推荐

