0

我想让一个模块控制器实现不同的操作方法,但我不希望 URL 像

www.example.com/module/index/action1  
www.example.com/module/index/action2  
www.example.com/module/index/action3

/index/我们带到“IndexController”的位置。拥有我想要的网址

www.example.com/module/action1  
www.example.com/module/action2  
www.example.com/module/action3

我需要为每个操作方法创建一个控制器类。在一个不错的类/文件/控制器中使用不同的操作方法获取我想要的 URL 的最佳方法是什么?我想知道除了 URL 重写之外是否还有其他方法。如果没有,你能给我指出一个很好的 Magento URL 重写教程吗?

4

2 回答 2

0

如果您不想在 Web 服务器上进行 URL 重写,您也可以本质上在 Magento 的代码中进行 URL 重写。例如,您可以像这样覆盖 Mage_Core_Controller_Varien_Router_Standard 中的函数 Match:

/* after getting the controller name and action name... */
if ((strcmp($module, 'myModuleName') == 0) && (strcmp($action, 'index') == 0)) {
    $action = $controller;
    $controller = 'index';
}
/* before checking if this place should be secure and instantiate controller class

不过,我认为 Web 服务器上的 URL 重写会更干净、更易于管理。

如果您使用 Magento 的 URL 重写,您可能需要为每个操作指定一个规则,例如:

Type: custom
Request Path: myModuleName/hello
Target Path: myModuleName/index/hello

您可以在管理员中的目录 > URL 重写管理下指定这些 URL 重写规则

于 2012-10-12T08:41:17.597 回答
0

没有真正的理由违反 Magentoreuter/controller/action计划。对于任何偏差,他们创建了 URL 重写功能。

即使省略module部分,您也可以创建 Url 重写。创建 URL 重写非常简单,我认为您不需要教程,只需打开管理面板,转到Catalog->Url Rewrites Management。单击创建新重写,选择自定义类型,将所需的 uri 部分添加到请求路径( module/action),并将实际 uri 部分添加到目标路径( module/controller/action)。

于 2012-10-12T08:55:30.727 回答