Symfony 5 搭配Apache环境访问/lucky/number路由返回404的问题求解
问题基础信息
运行环境
- 操作系统:Ubuntu 20
- Web服务:Apache 2.4.41
- 运行时:PHP 7.4.3
- 项目背景:初学Symfony框架,参考官方页面创建教程搭建首个应用
搭建流程
- 在服务器上创建命名为symfony的站点
- 进入项目目录
/var/www/html/symfony/,执行symfony new --full ./完成全功能版本的Symfony项目安装 - 按照教程要求编写对应控制器,在
config/routes.yaml中配置路由规则,执行composer require symfony/apache-pack命令安装Apache适配组件 - 执行
php bin/console debug:router命令校验路由注册状态,已确认app_lucky_number路由配置正常:支持任意请求方法、协议、主机,匹配访问路径为/lucky/number
访问异常表现
- 直接访问
http://server.ip/symfony/lucky/number时,返回Apache 404错误 - 访问
http://server.ip/symfony/public/时,可正常打开Symfony默认欢迎页面 - 手动携带入口文件访问
http://server.ip/symfony/public/index.php/lucky/number时,路由可正常响应,返回正确结果
现有配置状态
站点配置文件为/etc/apache2对应站点目录下的symfony.conf,核心配置参数:
- 计划将站点文档根目录指向
/var/www/html/symfony/public - 配置目录访问权限时,注释掉了
AllowOverride All与FallbackResource /index.php指令 - 已确认mod_rewrite模块处于启用状态
问题根因
- 虚拟主机配置未生效:实际访问
http://server.ip/symfony/public/能打开欢迎页,说明Apache当前实际生效的文档根目录为/var/www/html,symfony.conf中配置的public目录根路径并未被应用 - 请求转发规则未启用:
AllowOverride All被注释后,项目public目录下由apache-pack生成的.htaccess重写规则无法生效;同时FallbackResource指令被注释后,非静态文件请求无法自动转发到index.php入口
修复方案
方案一:标准虚拟主机配置(Symfony官方推荐)
该方式符合生产环境最佳实践,访问路径无冗余前缀:
- 修正虚拟主机参数:打开
symfony.conf,确认ServerName匹配访问用的server.ip,文档根路径为/var/www/html/symfony/public - 启用自定义站点:执行
a2ensite symfony.conf启用该站点配置,执行a2dissite 000-default.conf关闭Apache默认站点(默认站点文档根为/var/www/html,会和自定义站点产生路径冲突) - 恢复权限配置:在虚拟主机的目录权限段,取消
AllowOverride All的注释,确保Apache可以读取public目录下的.htaccess规则 - 开启请求转发:取消
FallbackResource /index.php指令的注释,或者直接依赖apache-pack生成的.htaccess重写规则实现请求转发 - 重载服务:执行
systemctl reload apache2使配置生效,通过http://server.ip/lucky/number验证访问
方案二:保留原有/symfony访问前缀
如果服务器上存在其他站点,无法修改文档根指向,可采用该方案:
- 打开Apache全局配置或默认站点的目录权限段,开启
AllowOverride All,允许Apache读取子目录下的.htaccess规则 - 在
/var/www/html/symfony/目录下创建.htaccess文件,写入转发规则:FallbackResource /symfony/public/index.php - 重载Apache服务,通过原有地址
http://server.ip/symfony/lucky/number验证访问
通用检查项
- 确认Apache运行用户(Ubuntu下为
www-data)对项目全目录拥有读取权限,避免权限不足导致的访问异常 - 确认mod_rewrite模块保持启用状态(当前已验证该配置正常)
内容的提问来源于stack exchange,提问作者Kosmos
相关产品推荐
相关产品推荐

