“前端控制器达到100个路由器匹配迭代”错误的原因是什么?


14

作为一个Magento开发人员,我已经无数次面对这个问题,我知道这是一个配置错误问题,当某些模块未加载,它们的路由器也未加载而导致该错误时。大多数情况下,它不执行任何操作即可解决,其他时候,您可以刷新缓存

我已经阅读了许多有关此的文章,试图调试在Magento核心Front控制器中放置一些额外的代码app/code/core/Mage/Core/Controller/Varien/Front.php,但是最后这仅显示缺少的模块路由器,而不是为什么未加载它们。每次发生这种情况时,我都会尝试查看哪些URL给出了错误,但这是无用的信息,与代码跟踪相同。总是一样

也许是由于模块冲突引起的?也许是cron任务做错了什么?也许在旧的Magento版本中有一些错误的代码?问题是从1.7版本开始不会发生此问题(或者如果发生,则完全是零星的)。我发现主流中有一些代码差异,例如

Mage::register('application_params', $params);

在的run()方法中app/code/core/Mage/Core/Model/App.php,或

$this->_shouldSkipProcessModulesUpdates()

签入_initModules()方法...

我想相信应该有明确找到原因的人。有小费吗?


1
你有提到这个吗?github.com/convenient/…–
蒂姆·霍尔曼

1
该文章的发布者能够通过覆盖Mage_Core_Model_Config和强制解决他们的问题$_useCache = false
蒂姆·霍尔曼

1
阅读整篇文章后,我认为您应该将其发布为我的问题的正确答案,以便其他用户可以阅读。谢谢
劳尔·桑切斯

Answers:


12

看来您遇到了Magento配置错误。

有一位优秀的写了解决方案在这里

在那篇文章中,作者能够通过在重新生成配置时重写Mage_Core_Model_Config和强制来纠正错误$_useCache = false


4
该死的!我从没能获得这篇文章的代表,其他人总是总是先链接到它;)
卢克·罗杰斯

3
@LukeRodgers的文章非常好!
蒂姆·霍尔曼

5
我只是想发表评论,并说,Magento的接受了这个作为一个修复与SUPEE-4755的问题 github.com/convenient/...
卢克·罗杰斯

2
我还添加了另一个补丁。不太好,但是在这里讨论。github.com/convenient/…–
卢克·罗杰斯

我在Magento 2 CE版本2.1.0中面临此问题。它应该是正确的,因为它是老问题了?
Ankit Shah

6

检查Magento的配置设置默认的无路线网址

系统>配置> Web>默认页面
。应该将其设置为默认值cms / index / noRoute。还要检查特定的存储值,是否在此覆盖了其默认值。如果未正确设置,Magento可以进入无限循环,直到达到100次迭代限制。

如果使用Magerun,请运行此命令。

magerun config:set cms/index/noRoute no-route

我在这里找到了解决方案,这就是我的问题。您可以检查URL的其他选项。

https://merchantprotocol.com/506/solved-front-controller-reached-100-router-match-iterations/


如果我执行./n98-magerun.phar config:get no-route,那么我得到找不到“ no-route”的配置值,并且该配置项甚至不存在,您确定答案吗?
黑色:

1
@Black,您做错了。控制台的get方法需要路径-因此您的命令应该是-\ n“ n98-magerun.phar config:get cms / index / noRoute” \ n请通过运行“ n98-magerun.phar config:get-检查帮助选项–帮助”
Sandipan S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.