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

如何在HostGator共享主机的非根域名部署Laravel应用

我之前有过Laravel部署到HostGator企业共享主机附加域名的实操经验,给你整理了一套一步步的操作指南,应该能帮到你:

部署Laravel到HostGator企业共享主机附加域名

1. 理清附加域名的目录结构

HostGator的附加域名默认会在public_html下生成对应子目录,比如你的附加域名是myapp.com,系统会自动创建public_html/myapp.com作为初始文档根目录。但Laravel要求必须把public文件夹设为网站根目录,这是核心要点,后面会调整。

2. 上传Laravel项目文件

有两种常用方式:

  • 打包上传:把本地Laravel项目打包成ZIP(记得排除node_modules、.env.local这类冗余文件),通过cPanel的「文件管理器」上传到public_html/myapp.com目录,然后解压。
  • Git克隆:如果项目托管在Git仓库,登录HostGator的SSH(企业共享主机默认支持),进入public_html/myapp.com目录,执行:
    git clone 你的仓库地址 .
    
    克隆完成后切换到生产分支即可。

3. 调整附加域名的文档根目录

这一步是部署成功的关键:

  • 登录cPanel,找到「Domains」分类下的「Addon Domains」。
  • 找到你的附加域名,点击右侧的设置图标(部分版本显示为「Document Root」选项),把默认的public_html/myapp.com修改为public_html/myapp.com/public。
  • 保存设置,HostGator会自动更新服务器配置。

4. 配置.env文件

  • 在项目根目录复制.env.example并重命名为.env,通过cPanel文件管理器编辑:
    • 把APP_URL设为你的附加域名,比如APP_URL=https://myapp.com
    • 填写数据库信息:在cPanel的「MySQL Databases」里创建好数据库、用户并授权,把对应的DB_DATABASE、DB_USERNAME、DB_PASSWORD填进去
    • 生成应用密钥:打开cPanel的「Terminal」工具,进入项目根目录执行:
      php artisan key:generate
      

5. 设置正确的文件权限

HostGator共享主机对权限要求严格,必须确保以下目录权限正确:

  • 给storage和bootstrap/cache目录设置755权限,目录内文件设为644
  • 可以通过SSH执行命令快速设置:
    chmod -R 755 storage bootstrap/cache
    chmod -R 644 storage/** bootstrap/cache/**
    
    也可以在文件管理器里右键目录,手动修改权限。

6. 测试访问与问题排查

现在访问你的附加域名,如果能看到Laravel的欢迎页面,就说明部署成功了。如果遇到500错误:

  • 先检查.env文件的数据库、APP_URL配置是否正确
  • 查看storage/logs目录下的错误日志,定位具体问题
  • 确认HostGator的PHP版本和你的Laravel版本兼容(比如Laravel 10需要PHP 8.1+),可以在cPanel的「Select PHP Version」里切换版本

额外注意:伪静态配置

Laravel的路由依赖URL重写,public目录下默认已经有.htaccess文件,如果访问路由出现404,可以检查文件是否存在,或者补充以下内容到public/.htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:30:15