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

Symfony 4中路由在调试列表存在但访问返回404问题

解决Symfony 4路由存在但Apache返回404的问题

你遇到的核心问题很明确:请求根本没被转发到Symfony的前端控制器(public/index.php)——毕竟如果是Symfony处理的请求,哪怕路由配置有问题,也会返回Symfony自带的404页面,而非Apache原生的404报错。结合你的场景,给你几个针对性的排查和解决步骤:

1. 检查Apache虚拟主机的DocumentRoot指向

很多人容易踩这个坑:把虚拟主机的DocumentRoot指向Symfony项目的根目录,而非项目下的public文件夹。你的虚拟主机配置文件(Ubuntu下通常在/etc/apache2/sites-available/目录中)必须这样设置:

<VirtualHost *:80>
    ServerName new.staff-fdr.dev
    # 重点:这里必须指向项目的public目录
    DocumentRoot /绝对路径/到你的symfony项目/public

    <Directory /绝对路径/到你的symfony项目/public>
        AllowOverride All
        Require all granted

        # 开启重写引擎,将非静态文件请求转发给index.php
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/new.staff-fdr.dev-error.log
    CustomLog ${APACHE_LOG_DIR}/new.staff-fdr.dev-access.log combined
</VirtualHost>

修改完成后,记得启用站点(如果未启用):sudo a2ensite 你的站点配置文件名.conf,然后重启Apache:sudo systemctl restart apache2。

2. 确保Apache的mod_rewrite模块已启用

Symfony的路由重写完全依赖这个模块,Ubuntu下执行以下命令启用:

sudo a2enmod rewrite
sudo systemctl restart apache2

3. 验证public目录下的.htaccess文件

Symfony 4默认会在public目录生成.htaccess文件,负责将所有非静态文件的请求转发给index.php。如果这个文件丢失或内容错误,也会导致请求无法到达Symfony。正常的文件内容应该是这样的:

RewriteEngine On

RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
RewriteRule ^ - [E=BASE:%1]

RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^ %{ENV:BASE}/index.php [L]

如果文件不存在,手动创建并粘贴上述内容即可。

补充:为什么debug:router能看到路由,但访问不了?

因为bin/console debug:router是直接读取Symfony内部的路由配置,完全不依赖Web服务器的设置——它只负责告诉你Symfony能识别哪些路由,但如果Web服务器没把请求传给Symfony,这些路由自然无法被访问到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:36:59