4

我的 magento 安装有一个奇怪的问题。我在安装过程中将管理员 url 设置为 myadmin。在我的 local.xml 文件中,管理员的 frontName 如下所示:

  <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[myadmin]]></frontName>
                </args>
            </adminhtml>
        </routers>
    </admin>

登录成功后重定向到

[http://127.0.0.1/index.php/admin/myadmin/index/noRoute/key/53c3c0bf6b77fb838f1d363c24443483/]

当我单击仪表板链接时,它可以工作。当我将 myadmin 更改为 admin 时,它可以工作。那么这个问题有什么解决方案吗?任何帮助将不胜感激。问候。

4

2 回答 2

2

当我也有带有多商店视图的自定义管理员路由时,我遇到了这个问题

我去http://dev.loc/magento/myadmin/时遇到了问题 {登录后我有 404 }

但是如果我使用http://dev.loc/magento/storeview/myadmin/ {这很好用}

调试后我发现在 \app\code\core\Mage\Adminhtml\Controller\Action.php

        /**
     * Controller predispatch method
     *
     * @return Mage_Adminhtml_Controller_Action
     */
    public function preDispatch()
    {
        .......
        if (!$_isValidFormKey || !$_isValidSecretKey) {
            $this->setFlag('', self::FLAG_NO_DISPATCH, true);
            $this->setFlag('', self::FLAG_NO_POST_DISPATCH, true);
            if ($this->getRequest()->getQuery('isAjax', false) || $this->getRequest()->getQuery('ajax', false)) {
                $this->getResponse()->setBody(Mage::helper('core')->jsonEncode(array(
                    'error' => true,
                    'message' => $_keyErrorMsg
                )));
            } else {
                $this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );
            }
            return $this;
        }

当您成功登录时,此 IF 条件会产生 false,因此在成功登录后设置重定向的语句不会运行

$this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );

所以你可以扩展 Mage_Adminhtml_Controller_Action

并覆盖 Pre-dispatch 函数或者你这个观察者adminhtml_controller_action_predispatch_start来设置重定向页面

$this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );

谢谢

于 2012-09-02T14:26:10.473 回答
1

我通过重写http://dev.loc/magento/myadmin/ {KO}解决了这个问题

http://dev.loc/magento/index.php/admin/myadmin/ {OK}

对于 nginx:

rewrite ^/index.php/admin/myadmin/(.*)$ /index.php/myadmin last;
rewrite ^/myadmin.*$ /index.php/admin/myadmin$1 permanent;
rewrite ^/index.php/myadmin.*$ /index.php/admin/myadmin$1 permanent;
rewrite ^/admin/myadmin.*$ /index.php/admin/myadmin$1 permanent;
于 2015-12-31T11:35:51.837 回答