與笨

2017-03-11 64 views
0

我的控制器的結構定義路由的路由問題(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

ie。 api/xŸ點到文件API_ X _ Ÿ .PHP

一切工作細跟上面的路由,但下面是我的問題:

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

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

如何解決?

+0

無論是幫助還是沒有改變這些路由的順序。大多數具體的路線應該放在第一位。根據文檔,您在那裏編寫了正確的代碼。此外,請遵循'routes.php'文件開頭的所有建議和建議,如默認路線。作爲經驗法則,遵循文檔中的標準化。說道,在路由的右側用控制器名稱的小寫字母來嘗試。所有這些提到後,下一步,我會嘗試的是與'index.php'在它的URL。當然,你應該給我們錯誤,你正在得到。但是控制器代碼也會有幫助。 – Tpojka

+0

@Tpojka:你能否給我一個答案 –

回答

1

正如在評論中提到的,你應該改變順序。

但是你也應該將(:any)改爲(。*)。 (:any)只會匹配你網址的第一部分。

所以正確的方法是:

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