uri 路由
一般來說,uri字串有著和它唯一對應的控制器(controller)類/方法。uri的各個部分是如下模式(pattern):
複製** **如下:
然而在一些例子中,你也許想重定向這種關係來呼叫乙個不同的類/方法(class/function),而不是與url一一對應(的呼叫).
例如,你可能想使你的url採用這種原型(prototype):
複製** **如下:
一般情況下,url的第二個部分表示方法名,不過在上面的例子中,它表示乙個產品的id。codeigniter可以實現這個功能,讓使用者可以重新定向(remap)uri處理程式.
設定你自己的路由規則
路由規則定義在application/config/routes.php 檔案中. 在此檔案中,你可以看到乙個名為 $route的陣列,它可以讓你定義你自己的路由規則。 定義可以用兩種方式: 萬用字元(wildcards) 或者 正規表示式(regular expressions)
萬用字元乙個典型的萬用字元路由看起來是這樣的:
複製** **如下:
$route['product/(:num)'] = "catalog/product_lookup";
在乙個路由中,陣列的鍵包含著被匹配的uri,而陣列的值包含著路由將被重定向的目的地.在上面的例子中,如果單詞「product」出現在url的第乙個部分中,而且數字(:nbxfgdoqum)出現在uri的第二個部分中,"catalog"類和"product_lookup"方法將被替代使用(即將被重定向).
你可以匹配文字的值或者使用以下兩種萬用字元型別:
:num 將匹配乙個只包含有數字的segment(段).
:any 將匹配任程式設計客棧何字元(可以是多個segment段).可以匹配多個值,如:
$route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5"; //將整條url上的每乙個引數全部傳遞給catalog控制器下的 product_lookup方法。
注意: 路由將會按照定義的順序來執行.高層的路由總是優先於低層的路由.
例子下面是一些簡單的例子:
複製** **如下:
$route['journals'] = "blogs";
如果url的第乙個分段(類名)是關鍵字"journals",那麼將會重定向到"blogs"類中處理.
複製** **如下:
$route['blog/joe'] = "blogs/users/34";
如果url的前兩個分段是"blog"和"joe",那麼將會重定向到"blogs"類的"users"方法中處理.並且將id"34"設為引數.
複製** **如下:
$route['product/(:any)'] = "catalog/product_lookup";
當"product"作為url中第乙個分段時, 無論第二分段是什麼都將被重定向到"catalog"類的"product_lookup"方法.
複製** **如下:
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
當「product」作為 url 中第乙個分段時,如果第二分段是數字,則將被重定向到「catalog」類,並傳遞所匹配的內容到「product_lookup_by_id」方法中bxfgdoq。
重要提示: 不要在前面或後面加"/".
正規表示式
如果你喜歡可以使用正規表示式來自定義你的路由規則. 任何有效的正規表示式都是被允許的, 甚至逆向引用.
注意: 如果你使用逆向引用請將雙反斜線語法替換為美元符語法(\\1 替換為 $1).
乙個典型的正規表示式看起來像下面的樣子:
複製** **如下:
$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";
上例中, 類似於 products/shirts/123 的uri 將換成呼叫 shirts 控制器類的 id_123 方法.
你也可以混合使用萬用字元與正規表示式.
系統保留的路由
系統會保留兩個路由:
第乙個為系統預設的路由:
複製** **如下:
$route['default_controller'] = 'welcome';
這個路由表明了當uri中不包含要訪問的類和控制器資訊的(即只訪問根目錄的情況,如http://localhost/ci)將要載入哪個控制器。上例中,系統將載入 "welcome" 這個類(控制器)。你應該保證設定乙個預設路由,不然你的首頁將會顯示 404 錯誤。
第二個為404頁面的路由:
複製程式設計客棧** **如下:
$route['404_override'] = '';
這個路由標識了如果請求的控制器無法訪問的時候將載入哪個控制器。它相當於覆蓋了預設的404錯誤頁面(即提供了自己定義404頁面的功能)。但它不會影響show_404()這個方法這個方法依然會載入預設的位於application/errors/error_404.php的error_404.php頁面。
重要: 保留的路由應該在所有萬用字元或正規表示式路由之前定義。
本文標題: codeigniter框架url路由總結
本文位址:
CodeIgniter框架介紹
入口 index.php 一些路徑常量定義 codeigniter.php 1.初始化一些 system core內的類,例如config,utf8,uri 和router等,router.set routing 處理路由對映。2.全域性函式get instance,取controller例項引用,...
敏捷 PHP 框架 CodeIgniter
codeigniter 是一套給 php 開發者使用的應用程式開發框架和工具包。她提供一套豐富的標準庫以及簡單的介面和邏輯結構,其目的是使開發人員更快速地進行專案開發。使用 codeigniter 可以減少 的編寫量,並將你的精力投入到專案的創造性開發上。她是乙個小巧但功能強大的 php 框架,作為...
CodeIgniter框架學習要點
codeigniter框架 講師 鄒義良 微博 weibo.com it266 主要內容 ci簡介 深入mvc設計模式 ci中的控制器與檢視 ci中的超級物件 資料庫訪問 ar模型 如何擴充套件ci的控制器 模型url相關函式 設定路由 分頁檔案上傳 session 驗證碼表單驗證 ci是什麼?co...