Codeigniter uri路由在版本3.x中已更改

时间:2017-06-16 16:03:44

标签: codeigniter codeigniter-3

我已从Codeigniter版本2.x升级到3.x,并注意到URI路由在传递多个段时的行为方式不同。

在2.x版本中,我能够传递以下网址变体:

domain.com/function/arg1
domain.com/function/arg1/arg2
domain.com/function/arg1/arg2/arg3

$ route [' function /(:any)'] =' function / $ 1' 适用于所有三种网址变体我的函数调用是函数($ arg1,$ arg2 = 0,$ arg3 = 0),它允许arg2和arg3是可选的,并在路由规则中以$ 1的形式传入。

为了在版本3.x中工作,我发现我必须将路由设置为:

$ route [' function /(:any)'] =' function / $ 1&#39 ;;
$ route [' function /(:any)/(:any)'] =' function / $ 1 / $ 2&#39 ;;
$ route [' function /(:any)/(:any)/(:any)'] =' function / $ 1 / $ 2 / $ 3';

有什么方法可以简化路由,以便它可以传递所有剩余的段,而不必为可能的段数的每个变化创建单独的路由规则?

1 个答案:

答案 0 :(得分:2)

(:any)不应与/字符匹配,此错误已在版本3中修复。

您应该仔细阅读the v3.0 upgrade guide ...

引用"Routes containing :any" -

  

肯定有许多开发人员将此漏洞用作实际功能。如果您是其中之一且想要匹配正斜杠,请使用.+正则表达式:

(.+)    // matches ANYTHING
(:any)  // matches any character, except for '/'