【问题标题】:Codeigniter Route ConfusionCodeigniter 路由混淆
【发布时间】:2012-11-08 15:19:28
【问题描述】:

我正在构建一个 URL 缩短网站。

这是我的config/routes.php 文件:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['(\w{2})/(.*)']        = '$2';
$route['(\w{2})']             = $route['default_controller'];

$route['join']                = 'main/join';
$route['activate/(:any)']     = "main/activate/$1";
$route['login']               = 'main/login';
$route['logout']              = 'main/logout';
$route['main/login']          = 'main/login';
$route['main/join']           = 'main/join';
$route['url/short']           = 'url/short';
$route['user']                = 'user/index';
$route['user/index']          = 'user/index';
$route['user/index/(:num)']   = 'user/index/$1';
$route['profile']             = 'user/profile'; 
$route['user/delete/(:any)']  = "user/delete/$1";

$route['(:any)']              = "url/go/$1";

嗯,如你所见,我实现了 CI Wiki here 中提到的语言。

但是现在最后一行路由不正常了。

$route['(:any)']              = "url/go/$1";

例如,myshortner.com/as34v 应该与上面的路由匹配并重定向到完整的 URL,但它会重定向到 0.0.0.1 !我该如何解决这个问题?

【问题讨论】:

  • 您是否将 url 作为控制器,并将 go 作为函数期望数字参数?否则它将转到您的默认控制器,它是主控制器并查找索引函数中的内容。
  • 当您说“而是将我重定向到0.0.0.1”时,您是什么意思?我的意思是,你知道它重定向到什么的唯一方法是调用某个控制器的函数,而 0.0.0.1 在这种情况下并没有真正的意义
  • 第三个参数应该是一个有效的method 名称class 并且您已将$1 作为一个不存在的方法名称传递。
  • 我有一个 url 控制器和 go 方法,它将 $1 作为 shourt url 键并用它获取长 url。最终重定向到长网址。

标签: php codeigniter routes uri


【解决方案1】:

首先,您应该有一个带有“go”函数的 URL 控制器,该函数接受一个保存在 $1 中的参数。确保它存在。

【讨论】:

  • 请告诉我第一个 rwo 路由和最后一个路由之间是否有任何冲突。也许这就是问题所在。
  • 我在路线中看不到任何会导致问题的东西。由于您正在调试,因此在控制器函数中放置了一个回显,并确保当您使用该 url 时控制器实际上被击中。如果您的调试消息打印,那么您的代码中存在逻辑问题,而不是路由。如果消息未打印,请注释掉除路线最后一行之外的所有内容。让我知道结果。
  • 实际上我认为我看到了路线的问题。你能提供你正在使用的测试网址吗?谢谢。
  • 它似乎试图达到一个不存在的参数。
  • 对。对于最后一种情况,如果你使用类似 www.mysite.com/something/page 的东西,那么 /something/page 将被发送到你的 go 控制器方法,其中包含两个参数“something”和“page”而不是 something/page。你必须在你的 go 函数中使用 php 的 func_get_args 来解决这个问题,或者用一个额外的 $2 路由来处理它。
猜你喜欢
  • 2014-11-04
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
相关资源
最近更新 更多