Controller类存在,访问/vendor/action/index仍404。Magento前端路由由etc/frontend/routes.xml注册,任一层名称不匹配都会落到noroute。
处理步骤
步骤1:确认模块已启用且registration.php、module.xml名称一致。执行module:status和setup:upgrade后查看config缓存,不要只看代码目录。
步骤2:routes.xml必须位于etc/frontend,router id通常为standard;route的id用于布局handle,frontName才是URL第一段。检查XML命名空间和模块name。
步骤3:Action类路径应匹配Controller/Action/Index.php,并实现ActionInterface或继承正确Action。Linux文件名大小写不一致在本地macOS可能正常、生产会404。
步骤4:在execute入口写临时脱敏日志。完全没有进入时检查前置路由冲突、URL Rewrite和Web服务器location;进入后返回404则查ResultFactory逻辑。
命令与数据检查
bin/magento module:status Vendor_Module
php -l app/code/Vendor/Module/Controller/Action/Index.php
xmllint --noout app/code/Vendor/Module/etc/frontend/routes.xml
bin/magento cache:clean config full_page上线前验证
访问标准URL返回预期状态;不存在action仍404;开启/关闭Store Code和两个Store View时路由均稳定,日志只记录一次执行。
不要把敏感参数直接写日志,自定义POST路由还需要正确处理CSRF。

