我发现 Magento 路由逻辑存在问题,我想看看是否有人可以确认这一点。
Magento 将路由器 admin、standard 和 default 堆叠起来,一次处理一个。Magento 根据 URL 获取当前模块名称(请参阅Mage_Core_Controller_Varien_Router_Standard::match())
,然后根据与 Magento 配置中的 frontName 的匹配项检查模块是否应由该路由器处理。如果找到匹配项,则路由它。如果没有,它继续到下一个路由器。
配置摘录:
<管理员> <路由器> <我的路线> <使用>管理员</使用> <参数> <module>MyNamespace_MyModule</module> <frontName>我的路线</frontName> </args> </myroute> </路由器> </admin> <前端> <路由器> <我的路线> <使用>管理员</使用> <参数> <module>MyNamespace_MyModule</module> <frontName>我的路线</frontName> </args> </myroute> </路由器> </前端>
这意味着,如果您为前端路由器使用与管理路由器相同的名称,则管理路由器将始终首先匹配,即使在前端页面上也是如此。您的前端页面现在将像管理页面一样使用 admin 进行路由base_url
,这可能与您商店的 URL 不同,从而导致重定向中断。
请注意,在管理基本 URL 与前端基本 URL 相同的 Magento 实例中,此问题并不明显。
谁能在这里确认我对路由器逻辑的评估是正确的?