Magentoルーティングロジックに関する問題を発見しました。誰でもこれを確認できるかどうか確認したいと思います。フロントエンドと管理ルータに同じMagentoルートフロントネームを使用
Magentoはルータをadmin、standard、defaultの順にスタックし、一度に1つずつ処理します。 Magentoは、URLに基づいて現在のモジュール名を取得します(Mage_Core_Controller_Varien_Router_Standard::match())
を参照し、Magento設定のfrontNameとの一致に基づいて、このルータでモジュールを処理する必要があるかどうかを確認します)。 、それは次のルータに進み
コンフィグ抜粋:。
<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>
これは、あなたの管理ルーターとしてあなたのフロントエンドルータに同じ名前を使用している場合、管理ルータは常に偶数で、最初に一致されることを意味しますフロントエンドページは管理者ページの場合はbase_url
という管理者ページを使用している場合はそのまま転送されます。店舗のURLとは異なる場合があります。
adminのベースURLがフロントエンドのベースURLと同じMagentoのインスタンスでは、この問題は発生しません。
ルータロジックの評価が正しいことを誰でも確認できますか?
私はあなたの特定の問題について話すことができません。私は完全にそれに従っているかどうかはわかりませんが、Magentoのルーティングは、1のアイデアを取り巻くようになり始めました。 2. adminモジュールにfrontname "admin"を使用し、 "modules"タグを使用してコントローラをコントローラに追加し、管理ルータが探します。あなたがこのパターンから離れると、あなたは痛みを感じます。 –
サードパーティのモジュールでこの問題が見つかりました。フロントエンドと管理領域に同じフロントネームを使用しました。これはうまく動作すると思われますが、違いは管理者ストアをロードするURLの "admin"文字列です。問題はフロントエンドページが管理ルータによってロードされ、フロントエンドのベースURLとは異なる管理ベースURLを使用することになりました。両方のルーターは、この名前の競合を除いて、設定に基づいて期待どおりに動作するように見えます。 – kirkmadera
これをさらに調べると、モジュールは私が思っていたように機能していないことが分かります。それは完全に管理者の外に自分のfrontnameを設定していた。モジュールのコントローラがMage_Adminhtml_Controller_Actionを拡張し、preDispatchが設計を管理設計に強制したため、管理者は同じように見えました。すべての管理者コントローラーは、 "モジュール"ノードを使用して "管理者"のフロントネームを通過して上書きする必要があります。このサードパーティのモジュールは正しく設定されていません。それでも、Magento – kirkmadera