在Codeigniter中使用自定义路由路由问题

时间:2017-03-11 08:03:14

标签: php codeigniter routing codeigniter-3

我的控制器结构(api是控制器内的文件夹)

controllers/api/Api_1_0.php
controllers/api/Api_2_0.php

在我的routes.php中

$route['api/(\d+)\.(\d+)']          = "api/Api_$1_$2";
$route['api/(\d+)\.(\d+)/(:any)']   = "api/Api_$1_$2/$3";

我需要的路由策略是,如果指定 /api/2.0 ,它将指向控制器文件 Api_2_0.php

即。 api / x y 指向文件Api_ x _ y .php

以上路由工作正常,但下面是我的问题:

https://www.example.com/api/2.0/photos/1234567890 // not working

https://www.example.com/api/2.0/photos // working

如何解决?

1 个答案:

答案 0 :(得分:1)

如评论中所述,您应该更改订单。

但你也应该将(:any)改为(。*)。 (:any)只会匹配您网址的第一段。

正确的方法是:

$route['api/(\d+)\.(\d+)/(.*)']   = "api/api_$1_$2/$3";
$route['api/(\d+)\.(\d+)']        = "api/api_$1_$2";