CodeIgniter内部重定向

时间:2014-01-30 20:07:34

标签: php codeigniter redirect

我想用一个控制器来处理所有请求,并且我有一个路由

$route['(:any)'] = 'links/index/$1';

和我的数据库中的表格(下面的截图)

Image

所以当URL是mydomain.com/first-article时,我从数据库控制器,操作和表id中选择,我想重定向到文章控制器,文章操作和传递table_id。 我该怎么办?

另外我需要保留网址

  

mydomain.com/first-article

然后我使用redirect()重定向我收到错误:

ERR_TOO_MANY_REDIRECTS, because of $route['(:any)'] = 'links/index/$1';

3 个答案:

答案 0 :(得分:1)

我必须诚实,我不会乱用路线。相反,我用uri->段

抓住了网址的一部分

只是一个想法

//example
//linksid
    $links_id = intval($this->uri->segment(3, 0));

所以http://www.mydomain.com/mycontroller/go/1会抓住1然后我可以从那里重定向......

答案 1 :(得分:1)

由于您的路由配置而发生无限重定向。您的路线规则是

$route['(:any)'] = 'links/index/$1';

这意味着在域名执行链接控制器索引操作之后会发生什么。例如,假设URl为http://www.mydomain.com/articles/article,CI将以articles作为参数执行链接控制器索引函数。在链接控制器中,您获取数据库并重定向到另一个控制器。但由于路由配置,链接控制器将再次执行。所以会出现一个重定向循环。

如果你需要执行文章控制器,你必须在其上面添加另一条规则,如下所示:

 $route['articles/article/(:any)'] = 'articles/article/$1';

我建议你首先仔细考虑你的网址模式,然后写下路线。

答案 2 :(得分:0)

我使用CodeIgniter Modular Extensions解决了它 - HMVC https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc。现在我可以在任何控制器中运行任何模块。