【问题标题】:Using Kohana Routes to redirect使用 Kohana 路由重定向
【发布时间】:2014-05-13 13:11:35
【问题描述】:

我正在使用 Kohana 框架 3.2

通常在我的引导文件中,我可以像这样设置一个 Route::set:

Route::set('faq', 'faq')->defaults(array('controller' => 'home', 'action' => 'faq'));

这样 example.com/faq 指向我的控制器主页,action faq。

我想知道我是否也可以通过这种方式设置重定向?

所以我可以说 example.com/faq 应该重定向到 example.com/thegreatfaqs?

或者必须像上面那样使用 route::set 到一个控制器,然后请求重定向到 /thegreatfaqs ?

【问题讨论】:

    标签: redirect routes kohana kohana-3


    【解决方案1】:

    Kohana 没有内置任何东西来处理路由内的重定向。

    我通常做的是路由到具有我所有重定向规则的重定向控制器,然后我在那里处理重定向。

    【讨论】:

    • 您将如何做到这一点?路由到重定向控制器 = 这意味着您创建了一个抓取所有内容的路由(如默认路由),然后从控制器检查您的规则是否应该将示例 /faq 重定向到 google.com/blabla ?如果不是,我们还需要其他路线怎么办?您是否将重定向路由放在所有其他路由的末尾?
    • 是的,这是最后一条路线。如果没有找到重定向匹配,您可以抛出 404 异常,或者如果您有一些错误控制器/操作,您可以直接调用它。
    【解决方案2】:

    您可以使用Route filter 执行此操作,但我认为这是一个坏主意,因为您正在中断 Kohana 应用程序的正常流程。 p>

    Route::set('redirecturl', 'redirecturl')
    ->filter(function($route, $params, $request) {
        header('Location: http://www.example.com/');
        exit;
    });
    

    我建议使用 Redirect rule (Apache .htaccess) 或从 Scott 提到的专用控制器操作重定向是更清洁的解决方案。

    【讨论】:

      【解决方案3】:

      你可以这样设置你的路线....>

      Route::set('faq', 'thegreatfaqs(/<action>(/<id>))')
      ->defaults(array(
          'controller'    => 'home',
          'action'    => 'faq',
      ));
      

      【讨论】:

      • 这指向我不寻求的控制器/动作。我想设置一个重定向,以便 example.com/faq 可以指向任何内容,它可以是 google.com/faq 等外部站点
      • 好的.. 更清洁的解决方案是按照 Scott 在这里的回答来实施。
      猜你喜欢
      • 2012-06-20
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2011-11-30
      • 1970-01-01
      • 2011-08-19
      相关资源
      最近更新 更多