【问题标题】:Codeigniter uri routing changed in version 3.xCodeigniter uri 路由在 3.x 版本中更改
【发布时间】:2017-11-19 11:37:27
【问题描述】:

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

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

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

鉴于我的函数调用是 function($arg1, $arg2 = 0, $arg3 = 0) 允许 arg2 和 arg3 是可选的,并在路由规则中作为 $1 传入。

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

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

有什么方法可以简化路由,使其通过所有剩余的段,而不必为可能的段数的每个变体创建单独的路由规则?

【问题讨论】:

  • 我觉得CodeIgniter 3对参数的数量是比较严格的所以不知道有没有简单的方法让你使用更少的路由。
  • 你读过the v3.0 upgrade notes吗?

标签: codeigniter codeigniter-3


【解决方案1】:

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

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

引用"Routes containing :any"-

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

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

【讨论】:

  • 谢谢 - 我一定忽略了 v3.0 升级说明的那部分!
猜你喜欢
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 2016-07-07
相关资源
最近更新 更多