Symfony 5.3部署Apache后LexikJWT的/api/login_check路由配置错误
问题原因及解决方案
1. Apache配置异常(最常见原因)
本地使用Symfony内置服务运行正常,部署到Apache后报错,多数是Apache配置不符合Symfony运行要求导致:
- 确认Apache已开启
mod_rewrite模块,执行命令sudo a2enmod rewrite后重启Apache服务 - 确认Apache站点的
DocumentRoot配置指向你Symfony项目的public目录,而非项目根目录,否则所有路由都会多一层/public前缀导致匹配失败 - 确认站点配置中,
public目录对应的Directory块开启了AllowOverride All,允许.htaccess文件生效 - 确认
public目录下存在Symfony官方的.htaccess文件,缺失可以通过composer require symfony/apache-pack安装生成
2. 生产环境路由缓存未更新
部署到服务器后未清理旧的生产环境缓存,会导致新增的/api/login_check路由无法被识别:
- 切换到项目根目录,执行生产环境缓存清理命令:
php bin/console cache:clear --env=prod --no-debug - 执行后确认
var/cache/prod目录的权限归属Apache运行用户(通常为www-data),避免权限不足导致缓存读取失败
3. 请求不符合路由规则
api_login_check路由默认仅匹配POST请求,使用GET等其他请求方法访问时会触发找不到控制器的报错- 确认你请求的路径拼写、大小写完全和配置一致,没有多余的前后缀
4. 路由配置补全
你可以给api_login_check路由显式指定请求方法,避免规则匹配异常:
api_login_check: path: /api/login_check methods: [POST]
内容的提问来源于stack exchange,提问作者user9605514
相关产品推荐
相关产品推荐

