如何在CFWheels中重定向不存在的操作?

时间:2013-07-15 11:49:44

标签: coldfusion railo cfwheels

我有一个基本的应用程序,如果他们尝试访问的操作不在控制器中,我希望用户被重定向到主基础操作。

我设置了一些路线:

addRoute(name="pinShow",        pattern="pin/show/[key]",       controller="pin",       action="show");
addRoute(name="pinShow",        pattern="pin/show",             controller="pin",       action="show");
addRoute(name="pin",            pattern="pin",                  controller="pin",       action="index");

目前,如果用户在URL中键入/pin/something/,则加载的操作是索引,但仍保留在此URL上。我想进行301重定向,而不是简单地加载默认操作视图等。

我以为我可以使用我的控制器中的验证功能执行此操作,但它似乎无法正常工作。

verifies( except="index,show", handler="invalidAction" );

我的经纪人是:

private void function invalidAction() {

    flashInsert( messages = [{ messageString="Invalid action.", messageType="info" }] );
    redirectTo(route="pin");

}

这些都不起作用。有什么想法吗?

我即将上线,这只是我想收紧的事情!我宁愿杀死带有404或重定向的链接,而不是加载默认操作。

2 个答案:

答案 0 :(得分:3)

您可以将路线更改为:

addRoute(name="pinShow", pattern="pin/show/[key]", controller="pin", action="show");
addRoute(name="pinShow", pattern="pin/show",       controller="pin", action="show");
addRoute(name="pin",     pattern="pin/[invalid]",  controller="pin", action="invalidAction");
addRoute(name="pin",     pattern="pin",            controller="pin", action="index");

在这种情况下,您可能需要设置invalidAction方法public才能生效。

答案 1 :(得分:1)

@Michael Giovanni Pumo你可以使用轮子的onmissingtemplate事件,你可以写一个函数重定向到主页