【问题标题】:Codeigniter routing where there is no route没有路由的 Codeigniter 路由
【发布时间】:2013-04-17 06:04:15
【问题描述】:

目前我设置了一堆路由,如果有人登陆我的域,如果它不是有效的路由,我希望他们通过特定的控制器。一直保留欢迎控制器。对于域本身。这是可能吗?

【问题讨论】:

  • 只需设置 404 路由页面即可加载您想要的控制器/方法
  • 嗯,可以吗?也许..我会在 404 中尝试它,但希望也保留 404,我想这不会适用,因为任何不是控制器的东西我都想在概念 404 中使用或默认为这个 .. 所以 4040会无意中失败..
  • 无效路由等于不存在的 404 页面。我不明白你怎么能同时为这两个东西设置 2 条规则。
  • 是的..这就是我想说的..在说话时大声思考

标签: php codeigniter routes


【解决方案1】:

在您的application/config/routes.php (bottom of the docs page) 中使用$route['404_override']。它的工作原理与任何其他规则一样(将 controller/method 分配给它。在该控制器中,您可以使用 $this->uri->segment()uri_string() 或其他输入源来决定要做什么。

请记住发送带有show_404() 的 404 响应标头,否则如果请求实际上是在寻找不存在的东西。

更新

事实证明,当前(2.1 稳定版)分支似乎没有处理 404_override 的子目录,在路由器类 here 中,here 应该尝试检查是否有带有子目录的第三段或不。此外,还有一个 pull request 旨在解决此问题,尚未合并。

【讨论】:

  • 目前它为我提供 500 错误。我使用的控制器路径是有效路径,并且可以通过其他路由方式工作
  • 啊.. 显然你不能在使用 404 方法时在子文件夹中有控制器?
  • 我害怕不,查看路由器源,it seems kinda unhandled。这里应该有一些逻辑,看看是否有两个以上的段......
  • 是的,目前正在尝试解决这个问题,然后相应地重定向,但是我遇到了重定向问题。它应该重定向到/profile/url_segment(使用$this->uri->segment(1)),因为在这种情况下我只关心第一段。然而做redirect('/profile/'$this->uri->segment(1))它重定向到/profile/profile即使当我回显它的组合时它的/profile/whatever.the.segment
  • $this->uri->segment() 方法从 1 索引段,所以你的 uri 是 /profile/some.segment 然后是 segment(1) == 'profile'segment(2) == 'some.segment'
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多