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

Symfony 4在GoDaddy虚拟主机中非根路由返回404问题求助

解决GoDaddy虚拟主机上Symfony 4非根路由404的问题

嘿,我之前在GoDaddy虚拟主机上折腾Symfony时也碰到过一模一样的问题!这大概率是URL重写规则没配置到位导致的——毕竟Symfony需要把所有请求都转发到public/index.php,而GoDaddy的Apache默认配置可能没满足这个要求。下面是我亲测有效的解决步骤:

1. 把Symfony的public目录设为网站根目录

GoDaddy默认的网站根目录一般是public_html,但Symfony的入口文件在项目的public文件夹里。你需要:

  • 登录GoDaddy主机控制面板,找到「网站设置」里的「网站根目录」选项
  • 将根目录修改为你的Symfony项目下的public文件夹(比如项目放在public_html/my-symfony-app里,就把根目录设为public_html/my-symfony-app/public)

2. 调整public目录下的.htaccess规则

Symfony的public目录里默认有.htaccess,但GoDaddy的Apache可能需要更明确的重写规则:

  • 打开public/.htaccess,替换成下面的规则(如果原有规则不生效的话):
<IfModule mod_rewrite.c>
    RewriteEngine On
    # 如果项目在子目录,把这里改成你的子路径,比如RewriteBase /my-app/
    RewriteBase /
    # 非静态文件的请求都转发到index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

3. 确认Apache的mod_rewrite模块已启用

虽然GoDaddy大部分主机默认开启了这个模块,但还是可以检查下:

  • 在public目录新建一个phpinfo.php,内容写<?php phpinfo(); ?>,访问这个文件后搜索mod_rewrite,看是否显示已启用
  • 如果没启用,要么在主机控制面板的「Apache设置」里找开启选项,要么联系GoDaddy客服帮忙开启

4. 清除Symfony缓存

有时候缓存会导致路由不生效,尤其是生产环境:

  • 如果有SSH权限,进入项目根目录执行:
php bin/console cache:clear --env=prod
  • 没有SSH权限的话,直接手动删除var/cache文件夹里的所有内容

另外要注意,GoDaddy主机可能有服务器缓存,修改配置后可能等几分钟才会生效,记得刷新浏览器缓存再测试路由哦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:53:06