Использование одного и того же внешнего имени маршрута Magento для внешнего интерфейса и маршрутизатора администратора

Я обнаружил проблему с логикой маршрутизации Magento и хотел бы узнать, может ли кто-нибудь это подтвердить.

Magento объединяет маршрутизаторы admin, standard, default и обрабатывает их по одному. Magento получает текущее имя модуля на основе URL-адреса (, см. Mage_Core_Controller_Varien_Router_Standard::match()), а затем проверяет, должен ли модуль обрабатываться этим маршрутизатором, основываясь на совпадении с frontName в конфигурации Magento. Если совпадение найдено, он направляет его. Если нет, он переходит к следующему маршрутизатору.

Выдержка из конфигурации:

    <admin>
        <routers>
            <myroute>
                <use>admin</use>
                <args>
                    <module>MyNamespace_MyModule</module>
                    <frontName>myroute</frontName>
                </args>
            </myroute>
        </routers>
    </admin>
    <frontend>
        <routers>
            <myroute>
                <use>admin</use>
                <args>
                    <module>MyNamespace_MyModule</module>
                    <frontName>myroute</frontName>
                </args>
            </myroute>
        </routers>
    </frontend>
    

Это означает, что если вы используете то же имя для внешнего маршрутизатора, что и для административного маршрутизатора, административный маршрутизатор всегда будет сопоставляться первым, даже на внешних страницах. Теперь ваша страница внешнего интерфейса будет маршрутизироваться так, как если бы она была страницей администратора, используя admin base_url, который может отличаться от URL-адреса вашего магазина, что приводит к нарушению перенаправления.

Обратите внимание, что эта проблема не проявляется в экземплярах Magento, где базовый URL-адрес администратора совпадает с базовым URL-адресом внешнего интерфейса.

Кто-нибудь может подтвердить правильность моей оценки логики маршрутизатора?

6
задан B00MER 7 May 2012 в 21:36
поделиться