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

Symfony 6部署至主机后路由失效,本地正常如何解决?

Symfony 6部署路由404问题解决步骤

1. 优先检查虚拟主机文档根目录设置

虚拟主机的文档根目录必须指向项目的public文件夹,而非项目根目录。大部分虚拟主机面板(如cPanel)支持修改该设置:找到域名对应的「文档根」选项,选择项目下的public目录即可。这是最核心的解决方式,因为Symfony的Web入口本身就设计为public目录。

2. 修正根目录.htaccess(若无法修改文档根)

若主机限制无法调整文档根,替换项目根目录下的.htaccess为以下代码:

RewriteEngine On
# 将所有非public开头的请求转发到public目录
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]

同时确保public目录下保留Symfony默认的.htaccess(框架自带,用于将请求转发到index.php),内容如下:

RewriteEngine On
# 若请求的不是真实文件,转发到index.php处理路由
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

3. 清除生产环境缓存

部署后务必执行生产环境缓存清除命令,确保路由配置生效:

php bin/console cache:clear --env=prod

4. 验证路由配置

  • 检查控制器的路由注解(如#[Route('/login')])是否拼写正确;
  • 若使用routes.yaml配置路由,确认路径、控制器映射无误,示例:
    app_login:
        path: /login
        controller: App\Controller\LoginController::index
    

问题根源说明

你之前的.htaccess规则虽实现了隐藏public路径,但如果public目录下的默认路由转发规则缺失,或主机文档根指向错误,Symfony的路由组件无法接收请求,自然返回404。只有让请求正确到达public/index.php,Symfony才能解析并处理路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:16