Magento 1.6/администратор всегда перенаправляет в магазин после SUPEE-9767
Недавно я исправил сайт 1.6 с помощью SUPEE-9767
, в нашей копии разработки я не столкнулся с проблемами, но после того, как я перенес его на живой хост, я больше не мог попасть в административную область.
Я бы получил следующие перенаправления:
/admin (302) -> /index.php/admin
/index.php/admin (302) -> /
Я очистил кэш, перестроил индексы и подтвердил, что настройки файлов верны, но поведение остается прежним.
Такое чувство, что я что-то упускаю из виду.
2 answers
Я буквально только что провел большую часть дня, отлаживая эту проблему. Проблема возникает только при включенном https (что может объяснить, почему это не происходит в вашей среде разработки).
Строка 835 из PATCH_SUPEE-9767_CE_1.6.2.0_v1-2017-05-25-09-32-57.sh
вносит это изменение в _checkBaseUrl
в app/code/core/Mage/Core/Controller/Varien/Front.php
:
- $baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB, Mage::app()->getStore()->isCurrentlySecure());
-
+ $baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB,
+ Mage::getConfig()->shouldUrlBeSecure($request->getPathInfo())
+ );
Проблема в том, что shouldUrlBeSecure
возвращает значение false, поскольку имя администратора отсутствует в списке безопасных URL-адресов. Это приводит к тому, что Mage::getBaseUrl
возвращает небезопасный base_url, а последующее сравнение с текущим URL-адресом завершается ошибкой (отличается протокол/схема). Поэтому Magento перенаправит вас на base_url (т. Е. Перенаправление на поведение домашней страницы http, которое вы видите).
Я ненавижу основные хаки в качестве исправления, но отмена эффекта этого исправления в строке 317 app/code/core/Mage/Core/Controller/Varien/Front.php
кажется лучшим вариантом.
Определенно нет. Поместите его в приложение\код\локальный\Маг\Ядро\Контроллер\Вариен
Я только что протестировал, и это сработало так