Fejl: Front controller reached 100 router match iterations

Her gennemgår jeg hvordan du fejlfinder på fejlen "Front controller reached 100 router match iterations".

Ryd din cache

Mange oplever fejlen grundet en korrupt Magento cache, så start med at tømme cachen og se om det løser dit problem.

Forkert 404 side

En årsag kan også være at der er opsat en forkert 404 side for shoppen, eller det pågældende storeview, så tjek at du har sat en 404 side under System -> Konfiguration -> GENERELT -> Web åbn sektionen Standardsider og sikre dig at følgende felter er sat:

  • Standard 404/no-route URL: cms/index/noRoute
  • CMS 404-side: En CMS side der er synlig for det pågældende elle alle store views.

Fejlfind

For at kunne fejlfinde på dette, er vi nødt til midlertidigt at implementere noget kode, så vi kan se hvad der går galt.

  • Tag backup af filen /app/code/core/Mage/Core/Controller/Varien/Front.php
  • Åbn filen /app/code/core/Mage/Core/Controller/Varien/Front.php
  • Find følgende sektion:
    while (!$request->isDispatched() && $i++ < 100) {
        foreach ($this->_routers as $router) {
            /** @var $router Mage_Core_Controller_Varien_Router_Abstract */
            if ($router->match($request)) {
                break;
            }
        }
    }
  • Erstat ovenstående med følgende kode:
    Mage::log('----Matching routers------------------------------');
    Mage::log('Total ' . count($this->_routers) . ': ' . implode(', ', array_keys($this->_routers)));
    while (!$request->isDispatched() && $i++<100) {
        Mage::log('- Iteration ' . $i);
        $requestData = array(
            'path_info' => $request->getPathInfo(),
            'module' => $request->getModuleName(),
            'action' => $request->getActionName(),
            'controller' => $request->getControllerName(),
            'controller_module' => $request->getControllerModule(),
            'route' => $request->getRouteName()
        );
    
        $st = '';
        foreach ($requestData as $key => $val) {
            $st .= "[{$key}={$val}]";
        }
        Mage::log('Request: ' . $st);
        foreach ($this->_routers as $name => $router) {
            if ($router->match($this->getRequest())) {
                Mage::log('Matched by "' . $name . '" router, class ' . get_class($router));
                break;
            }
        }
    }
    
  • Gem filen.
  • Hold øje med /var/log/system.log, du vil kunne se her hvordan routes bliver matched og hvilke der rammer de magiske 100 loops.
  • Når du har fundet frem til fejlen, så husk at ændre /app/code/core/Mage/Core/Controller/Varien/Front.php tilbage til det oprindelige.

Certificeret Magento udvikler og CTO i Improving, der arbejder med e-handelsløsninger I Magento -