Magento 404 on Admin Page

前端 未结 4 1759
醉酒成梦
醉酒成梦 2020-12-15 09:39

About a week ago, I was working in a test environment for a new site. I left for an hour, came back, and now cannot get to the admin page, as in ‘http://magento.localhost.co

相关标签:
4条回答
  • 2020-12-15 10:07

    A no route 404 error usually indicates Magento can't find the controller file it thinks it should load (usually due to a misconfiguration)

    The easiest way to diagnose this is to hop to _validateControllerClassName

    #File: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
    protected function _validateControllerClassName($realModule, $controller)
    {
        $controllerFileName = $this->getControllerFileName($realModule, $controller);
    
        if (!$this->validateControllerFileName($controllerFileName)) {  
            return false;
        }
    
        $controllerClassName = $this->getControllerClassName($realModule, $controller);
        if (!$controllerClassName) {
            return false;
        }
    
        // include controller file if needed
        if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
            return false;
        }
    
        return $controllerClassName;
    }
    

    and drop some logging or var_dumps around the return false statments. This should tell you which files Magento is looking for and can't find — it's usually enough to point to the problem.

        if (!$this->validateControllerFileName($controllerFileName)) {  
            var_dump($controllerFileName);
            return false;
        }
    
        $controllerClassName = $this->getControllerClassName($realModule, $controller);
        if (!$controllerClassName) {
            var_dump($controllerClassName);
            return false;
        }
    
        // include controller file if needed
        if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
            var_dump("Couldn't include: $controllerFileName");
            return false;
        }
    

    Update: It's normal for Magento look for the controller file in multiple places — every module that registered as containing adminhtml controller files needs to be checked.

    However, almost all the controller files being looked for are named /Controller.php. For the default /admin index page this should be IndexController.php. This makes me think your system thinks it's supposed to look for a controller with a blank name, (likely the default controller value since /admin (and not admin/index) is the URL you're using)

    There's myriad reasons this could happen — many revolving around a core file being changed or a configuration node in a module set to the wrong value. If the solutions below don't work for you you'll need to try diff-ing your code base vs. a clean one, disabling every custom module and if that fixing things turn modules back on until the problem module is found, or dive deep into debugging Magento routing code to figure out why your system is unhappy.

    One common cause for this behavior is an invalid value (or no value at all) being set for a custom admin path at

    System -> Configuration -> Admin -> Admin Base URL -> Use Custom Admin Path
    

    If the value for "custom admin path" is blank, or contains and additional /, this could be interfering with the routing.

    Since you can't access the admin, try running the following SQL query

    select * from core_config_data where path like '%custom_path%';    
    ...
    292 default 0   admin/url/use_custom_path   1
    293 default 0   admin/url/custom_path   admin/
    

    If you see results similar to the above, or admin/url/custom_path is blank/not-present but admin/url/use_custom_path is still 1 — then that's your problem.

    Try deleting these configuration values (admin/url/use_custom_path) and (admin/url/use_custom_path) from core_config_data.

    If that doesn't apply to your system, per my blank controller theroy my best guess would be for some unknown reason the code at

    #File: app/code/core/Mage/Core/Controller/Varien/Router/Admin.php
    public function fetchDefault()
    {
        // set defaults
        $d = explode('/', $this->_getDefaultPath());
        $this->getFront()->setDefault(array(
            'module'     => !empty($d[0]) ? $d[0] : '',
            'controller' => !empty($d[1]) ? $d[1] : 'index',
            'action'     => !empty($d[2]) ? $d[2] : 'index'
        ));
    }
    

    is populating the controller key with a blank value.

    0 讨论(0)
  • 2020-12-15 10:09

    I got this problem on a shop with custom admin url www.shop.com/customadminroute/ and System -> Configuration -> Web -> URL options -> Add Store Code to Urls: Enabled

    In this case the following module should fix it:

    https://github.com/romfr/404adminlogin

    Thanks to Blog post of Carmen Bremen:

    http://neoshops.de/2012/09/07/magento-404-fehlerseite-beim-admin-login/

    0 讨论(0)
  • 2020-12-15 10:21

    Before anything check your configuration file ( app/etc/local.xml) and make sure that you have "admin" as value for the frontName tag. ex.:

    <adminhtml>
      <args>
        <frontName><![CDATA[admin]]></frontName>
      </args>
    </adminhtml>
    

    Usually when you try http://yoursite.com/admin it gives you the admin area Try using an url like that http://yoursite.com/index.php/admin and if it works probably you need to only modify the rewrite rules or follow the suggestions (see the link below)

    0 讨论(0)
  • 2020-12-15 10:27

    In my case, my admin was giving me 404 because there's no store set. I solved it by running the following query

    SET SQL_SAFE_UPDATES=0;
    SET FOREIGN_KEY_CHECKS=0;
    UPDATE `core_store` SET store_id = 0 WHERE code='admin';
    UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
    UPDATE `core_website` SET website_id = 0 WHERE code='admin';
    UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
    SET FOREIGN_KEY_CHECKS=1;
    SET SQL_SAFE_UPDATES=1;
    

    You can check if you get the below error logged in var/log/system.log

    ERR (3): Recoverable Error: Argument 1 passed to Mage_Core_Model_Store::setWebsite() must be an instance of Mage_Core_Model_Website, null given, called in /.../app/code/core/Mage/Core/Model/App.php on line 634 and defined in /.../app/code/core/Mage/Core/Model/Store.php on line 395

    0 讨论(0)
提交回复
热议问题