【问题标题】:CakePHP Routing, reverse redirectionCakePHP 路由,反向重定向
【发布时间】:2012-11-12 12:15:17
【问题描述】:

假设我有一个控制器 Articles 和一个动作 Search

我在 routes.php 中设置了路由器配置,如下所示:

Router::connect(
                 '/search/:search_term/*', 
                 array('controller' => 'articles', 'action' => 'search')
);

这样当我导航到http://localhost/search/cakephp时,我可以在搜索结果中看到包含“cakephp”的文章标题

但如果我导航到http://localhost/articles/search/cakephp,我会看到相同的结果。

我想要的是自动重定向到

http://localhost/search/cakephp

当我导航到

http://localhost/articles/search/cakephp

基于routes.php中的配置。

【问题讨论】:

    标签: cakephp cakephp-2.2


    【解决方案1】:

    您必须创建 .htaccess 重定向,因为您无法使用路由:

    RewriteRule ^articles/search/(.+)$ /search/$1 [L,NC]
    

    好的,我发现了一些东西,但不太确定它会起作用:

    Router::redirect(
        '/articles/search/*',
        '/search/',
        array('persist' => true)
    );
    

    【讨论】:

    • 尝试了几分钟Router::redirect,看来我们正在做点什么。但是,您是否也知道如何重定向参数?像;将 /articles/search/cakephp 重定向到 /search/cakephp
    • 根据文档:'persist' => true 应该传输与第一行中的* 匹配的任何参数
    • 谢谢,您的解决方案有效。 Router::redirect('/articles/search/*', array('controller' => 'search', array('persist' => true))); 也可以工作。表现得像搜索是一个控制器,然后传递参数。
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2012-04-12
    • 2020-04-22
    相关资源
    最近更新 更多