Magento控制器路由路由到控制器的noRouteAction

时间:2011-10-17 11:10:10

标签: magento

我正在构建一个Controller,当我调用一个Action时,我得到一个404错误(上周一切正常!)。我正在使用:

调用该动作

http://www.website.com/route/controllername/actionname

例如:

http://www.website.com/abcdef/test/echo

我调查了这个问题(使用Mage :: log('..'))并发现控制器正在加载。控制器的名字也很好。进一步的调查显示,我的控制器中正在调用 noRouteAction

即我的控制器包含:

public function noRouteAction() {
  echo "noRoute Action";
}

public function echoAction() {
  echo "Echo Action";
}

当我致电http://www.website.com/abcdef/test/echo时,我得到“noRoute Action”。

为什么不调用echoAction?


修改:

config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Abcdef_Web>
            <version>1.0.0</version>
        </Abcdef_Web>
    </modules>
    <global>
        <helpers>
            <abcdef>
                <class>Abcdef_Web_Helper</class>
            </abcdef>
        </helpers>
        <blocks>
             <abcdef>
                <class>Abcdef_Web_Block</class>
             </abcdef>
        </blocks>
    </global>
    <frontend>
        <routers>
            <abcdef>
                <use>standard</use>
                <args>
                    <module>Abcdef_Web</module>
                    <frontName>abcdef</frontName>
                </args>
            </abcdef>
        </routers>   
        <layout>
            <updates>
                <abcdef>
                    <file>abcdef.xml</file>
                </abcdef>
            </updates>
        </layout>
    </frontend>    

</config>

控制器类文件:(TestController.php)

<?php

class Abcdef_Web_TestController extends Mage_Core_Controller_Front_Action {

  public function noRouteAction() {
    echo "noRoute Action";
  }

  public function echoAction() {
    echo "Echo Action";
  }

}

?>

1 个答案:

答案 0 :(得分:6)

确定发现了问题!!!!

似乎“将商店代码添加到网址”设置为是,因此Magento期待:

http://www.website.com/storecode/abcdef/test/echo

而不是:

http://www.website.com/abcdef/test/echo

对于那些有同样问题的人。这可以通过以下方式禁用:

系统/配置/常规/网络/网址选项/将商店代码添加到网址

注意:

我不记得将此选项设置为是。我看到一些报道说这个设置可能会自动更改(有4个人报告):

http://www.magentocommerce.com/boards/viewthread/192613/