我正在构建一个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";
}
}
?>
答案 0 :(得分:6)
确定发现了问题!!!!
似乎“将商店代码添加到网址”设置为是,因此Magento期待:
http://www.website.com/storecode/abcdef/test/echo
而不是:
http://www.website.com/abcdef/test/echo
对于那些有同样问题的人。这可以通过以下方式禁用:
系统/配置/常规/网络/网址选项/将商店代码添加到网址
注意:强>
我不记得将此选项设置为是。我看到一些报道说这个设置可能会自动更改(有4个人报告):