Magento 404 на странице администратора

Примерно неделю назад я работал в тестовой среде для нового сайта. Я ушел на час, вернулся и теперь не могу попасть на страницу администратора, так как в http://magento.localhost.com/admin приводит к отсутствию маршрута 404 Я единственный, у кого есть доступ к этому, он не живет ни в каком смысле. Я использую VBox с Ubuntu для размещения среды. Что касается возможных исправлений, я до сих пор пробовал...

  • Удостоверьтесь, что идентификаторы core_store, core_store_group, core_website и client_group установлены в 0 (как описано в этой и многих других статьях - http://www.nude-webdesign.com/fix-for-magento-admin-error-404-page-not-found/)

  • Воспроизведение с помощью /app/code/core/Mage/Core/Controller/Varien/Front.php метода _isAdminFrontNameMatched для отображения adminPath (его 'admin)

  • Очистили папку var, опустошенный кеш браузера. Кэширование сайтов было отключено.

  • Добавление 'index.php' к URL-адресу все равно приводит к 404.

  • В соответствии с Magento Admin 404 файл /app/etc/use _cache.ser для меня не существует.

В тот же день я просто играл с некоторыми файлами макетов, которые я скопировал в модуль, который я сделал, и запросы к мультимедийным темам (все они были возвращены в исходное состояние еще до того, как эта проблема возникла),

Есть ли у кого-нибудь какие-либо предложения относительно того, что здесь не так? Возможны ли другие возможные причины?

Спасибо за что-нибудь.

РЕДАКТИРОВАТЬ 1:06 pm 9/10/2013: В ответ на способ поиска контроллеров Alan Storm, который ищет Standard.php, мне было возвращено много "отсутствующих" файлов контроллера. Однако после загрузки новой копии 1.7.0.2, чтобы найти эти файлы, они также не присутствовали в их обоих. Вот мой вывод из предложения alan var_dump в Standard.php:

  • ... "/public_html/app/code/core/Маг/Индекс/Контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Paygate/controllers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Paypal/controllers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Маг/Виджет/Контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Oauth/controllers/Adminhtml/Controller.php"

  • ... "/public_html/приложение/код/​​ядро ​​/Mage/Authorizenet/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Bundle/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Centinel/controllers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Компилятор/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Connect/controller/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Загружаемые/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/ImportExport/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Api2/контроллеры/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/PageCache/controllerlers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/XmlConnect/controllers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/Adminhtml/controllers/Controller.php"

  • ... "/public_html/app/code/community/Phoenix/Moneybookers/контроллеры/Controller.php"

  • ... "/public_html/app/code/core/Mage/Captcha/controllers/Adminhtml/Controller.php"

  • ... "/public_html/app/code/core/Mage/CurrencySymbol/controllers/Adminhtml/Controller.php"

  • ... "/public_html/приложение/код/​​ядро ​​/Mage/CURRENCYSYMBOL/Контроллеры/Adminhtml/IndexController.php"

Решено 3:39 вечера 9/10/2013: Хорошо, он исправлен, хотя и довольно грубо. Я сделал вывод предложения var_dump от Alan Storm, чтобы иметь в виду, что я создал ошибку где-то в пуле базового кода (что не то, что я намеревался делать, прикручивая код по умолчанию). К сожалению, для точного обучения я заменил его всем стандартным кодом ядра ядра 1.7.0.2. Это было сделано до того, как Алан обновил свой первоначальный ответ с большим количеством предложений, которые я никогда не расследовал. Спасибо Алан, ты рад.

Ответ 1

Ошибка маршрута 404 обычно указывает, что Magento не может найти файл контроллера, который, по его мнению, должен загружаться (обычно из-за неправильной конфигурации)

Самый простой способ диагностировать это - перейти в _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;
}

и оставьте некоторые записи или var_dump вокруг возвратных false статусов. Это должно сказать вам, какие файлы Magento ищет и не может найти - это обычно достаточно, чтобы указать на проблему.

    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;
    }

Обновление. Для Magento нормально искать файл контроллера в нескольких местах - каждый модуль, который зарегистрирован как содержащий файлы контроллера adminhtml, должен быть проверен.

Тем не менее, почти все файлы контроллера, которые ищутся, называются /Controller.php. Для индексной страницы /admin по умолчанию это должно быть IndexController.php. Это заставляет меня думать, что ваша система думает, что она должна искать контроллер с пустым именем (вероятно, значение контроллера по умолчанию с /admin (а не admin/index) - это URL, который вы используете)

Там могут быть многочисленные причины: многие из них изменяются вокруг изменяемого файла ядра или конфигурации node в модуле, установленном на неправильное значение. Если нижеприведенные решения не работают для вас, вам нужно попробовать разложить свою базу кода по сравнению с чистой, отключив каждый настраиваемый модуль, и если эти исправления вернут модули обратно, пока не обнаружен проблемный модуль, или не погрузитесь глубоко в отладку кода маршрутизации Magento, чтобы понять, почему ваша система недовольна.

Одной из распространенных причин такого поведения является недопустимое значение (или вообще не значение) для настраиваемого пути администратора в

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

Если значение для "настраиваемого пула админов" пуст или содержит и добавляет /, это может помешать маршрутизатору.

Поскольку вы не можете получить доступ к администратору, попробуйте запустить следующий SQL-запрос

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/

Если вы видите результаты, похожие на приведенные выше, или admin/url/custom_path пуст/нет, но admin/url/use_custom_path по-прежнему 1 - тогда это ваша проблема.

Попробуйте удалить эти значения конфигурации (admin/url/use_custom_path) и (admin/url/use_custom_path) из core_config_data.

Если это не относится к вашей системе, для моего пустого контроллера theroy мое лучшее предположение будет по неизвестной причине код в

#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'
    ));
}

заполняет ключ controller пустым значением.

Ответ 2

В моем случае мой администратор дал мне 404, потому что там нет магазина. Я решил это, выполнив следующий запрос

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;

Вы можете проверить, не удалось ли получить следующую ошибку: var/log/system.log

ERR (3): восстанавливаемая ошибка: аргумент 1 передан в Mage_Core_Model_Store:: setWebsite() должен быть экземпляром Mage_Core_Model_Website, нулевым значением, вызывается в /.../app/code/core/Mage/Core/Model/App.php в строке 634 и определен в /.../app/code/core/Mage/Core/Model/Store.php в строке 395

Ответ 3

Прежде чем что-либо проверьте свой файл конфигурации (app/etc/local.xml) и убедитесь, что у вас есть "admin" в качестве значения для тега frontName. например:.

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

Обычно, когда вы пытаетесь http://yoursite.com/admin, он дает вам область администратора Попробуйте использовать такой URL-адрес http://yoursite.com/index.php/admin и если это работает, вероятно, вам нужно только изменить правила перезаписи или следовать рекомендациям (см. ссылку ниже).

Ответ 4

У меня возникла проблема с магазином с настраиваемым URL-адресом администратора www.shop.com/customadminroute/и System → Configuration → Web → URL → Добавить код магазина в URL: Enabled

В этом случае следующий модуль должен исправить это:

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

Благодаря записи в блоге Кармен Бремен:

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