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

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

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

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

Спасибо за все.

EDIT 1:06 pm 9/10/2013: В ответ на метод поиска контроллеров Alan Storm, который ищет Standard.php, мне было возвращено много «отсутствующих» файлов контроллеров. Однако после загрузки новой копии 1.7.0.2, чтобы найти эти файлы, они также не присутствовали в их обоих. Вот мой вывод из предложения var_dump от Alan в Standard.php:

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

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

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

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

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

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

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

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

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

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

  • … "/ public_html / приложение / код / ​​ядро ​​/ Mage / Загружаемые / Контроллеры / Adminhtml / Controller.php"

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

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

  • … "/ public_html / приложение / код / ​​ядро ​​/ Mage / кэш страниц / Контроллеры / Adminhtml / Controller.php"

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

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

  • … "/ public_html / приложение / код / ​​сообщества / Phoenix / Moneybookers / контроллеры / Controller.php"

  • … "/ public_html / приложение / код / ​​ядро ​​/ Mage / Защитный код / ​​Контроллеры / Adminhtml / Controller.php"

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

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

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

Ошибка маршрута 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; } 

и отбросить некоторые logging или var_dump s вокруг возвращаемых 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 называются /Controller.php . Для страницы индекса по умолчанию /admin это должен быть IndexController.php . Это заставляет меня думать, что ваша система думает, что она должна искать контроллер с пустым именем (вероятно, значение контроллера по умолчанию, поскольку /admin (а не admin/index ) – это URL-адрес, который вы используете)

Существует множество причин, по которым это может произойти: многие из них изменяются вокруг основного файла, который изменяется, или узел конфигурации в модуле установлен на неправильное значение. Если нижеприведенные решения не работают для вас, вам нужно попробовать разложить свою базу кода по сравнению с чистой, отключив каждый настраиваемый модуль, и если эти исправления вернут модули обратно, пока не обнаружен проблемный модуль, или не погрузитесь глубоко в отладку кода маршрутизации 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 my best guess будет по какой-то неизвестной причине код в

 #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 ключ controller пустым значением.

В моем случае мой администратор давал мне 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): Recoverable Error: аргумент 1, переданный в Mage_Core_Model_Store :: setWebsite () должен быть экземпляром Mage_Core_Model_Website, null задан, вызывается в /…/app/code/core/Mage/Core/Model/App.php в строке 634 и определен в /…/app/code/core/Mage/Core/Model/Store.php в строке 395

Прежде чем что-либо проверьте свой файл конфигурации (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, и если он работает, вероятно, вам нужно будет только изменить переписывание правила или следовать рекомендациям (см. ссылку ниже)

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

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

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

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

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