Magento 2.1.11首页404错误求助:直接访问CMS首页正常但首页报错
我遇到过不少Magento 2.1.x版本里这种诡异的首页404情况——直接访问CMS首页没问题,但走根路径就报错,结合你已经试过常规单店bug修复的情况,咱们可以从几个更细节的方向排查:
排查路由匹配的底层配置
有时候单店模式下store表的关联配置会悄悄出问题,导致系统解析根路径时找不到正确的CMS页面。先跑个SQL查一下:SELECT * FROM store;重点看
store_id=1的那条记录,code是不是default,website_id有没有和website表的对应ID匹配。
另外,缓存有时候会顽固保留错误的路由规则,别只依赖缓存清理命令,手动删除var/cache和var/page_cache目录,再执行:bin/magento cache:clean config full_page检查布局XML的异常干扰
自定义主题或模块的布局文件出错,也会导致首页内容区无法正常渲染。你可以先临时切换到Magento默认的Luma主题,如果首页恢复正常,那肯定是你当前主题的cms_index_index.xml有问题——比如错误的块引用、节点嵌套错误。
同时去var/log/system.log和var/log/exception.log里搜cms_index_index相关的日志,看看有没有布局解析错误、块类不存在这类具体报错,能帮你快速定位问题点。清理冲突的URL重写规则
url_rewrite表如果有冲突的重写记录,会覆盖首页的默认路由。跑个SQL查一下:SELECT * FROM url_rewrite WHERE request_path='/' OR request_path='';如果发现多余的重写记录,先备份这个表,然后删除冲突的条目,再重新生成URL重写:
bin/magento indexer:reindex url_rewrite再验证单店模式的核心配置细节
虽然你说试过单店bug修复,但再确认几个容易忽略的点:- 后台
Stores > Settings > Configuration > General > Web > Default Pages里,Default Web URL是cms,CMS Home Page确实选了正确的首页CMS页; - 查
core_config_data表,确保web/secure/base_url和web/unsecure/base_url没有多余的后缀,比如都以/结尾; - 执行命令开启URL重写(防止配置被意外修改):
bin/magento setup:store-config:set --is-url-rewrite-enabled=1
- 后台
修复Magento 2.1.x特定的路由bug
Magento 2.1.x有个已知的路由匹配bug,单店模式下StoreResolver的优先级可能被干扰。你可以在app/etc/di.xml里添加(如果没有的话):<preference for="Magento\Store\Model\StoreResolver" type="Magento\Store\Model\StoreResolver\DefaultStore" />然后重新编译代码:
bin/magento setup:di:compile
注意:所有操作前记得备份数据库和代码文件,避免意外情况。
内容的提问来源于stack exchange,提问作者timT

