我想用一个控制器来处理所有请求,并且我有一个路由
$route['(:any)'] = 'links/index/$1';
和我的数据库中的表格(下面的截图)
所以当URL是mydomain.com/first-article时,我从数据库控制器,操作和表id中选择,我想重定向到文章控制器,文章操作和传递table_id。 我该怎么办?
另外我需要保留网址
mydomain.com/first-article
然后我使用redirect()重定向我收到错误:
ERR_TOO_MANY_REDIRECTS, because of $route['(:any)'] = 'links/index/$1';
答案 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。现在我可以在任何控制器中运行任何模块。