首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

CodeIgniter URL 路由機制完整解析:自定義規則與保留路由

     編輯:PHP 綜合知識

CodeIgniter 路由系統允許將 URI 重新映射至任意控制器/方法,支援萬用字元與正則表達式兩種規則定義方式,本文完整說明配置細節與實務範例。

路由配置檔案

application/config/routes.php 中的 $route 陣列定義所有規則,鍵為匹配 URI,值為目標控制器/方法。

萬用字元規則

萬用字元匹配說明
:num純數字段段
:any任意字元(可跨多段)

基本範例

$route['product/(:num)'] = 'catalog/product_lookup';
// product/123 → Catalog::product_lookup(123)

$route['product/(:any)'] = 'catalog/product_lookup/$1/$2/$3/$4/$5';
// 將所有參數傳遞

優先順序

規則依定義順序執行,越早定義優先級越高。

實務範例集

// 簡單重導向
$route['journals'] = 'blogs';
// /journals → Blogs controller

// 固定參數重導向
$route['blog/joe'] = 'blogs/users/34';
// /blog/joe → Blogs::users(34)

// 萬用字元
$route['product/(:any)'] = 'catalog/product_lookup';
// /product/abc → Catalog::product_lookup('abc')

// 數字參數傳遞
$route['product/(:num)'] = 'catalog/product_lookup_by_id/$1';
// /product/123 → Catalog::product_lookup_by_id(123)

正則表達式規則

$route['products/([a-z]+)/(\d+)'] = '$1/id_$2';
// /products/shirts/123 → Shirts::id_123()

// 反向引用請用 $1 而非 \\1
// 可混合使用萬用字元與正則

系統保留路由(必須優先定義)

// 預設控制器(訪問根目錄時)
$route['default_controller'] = 'welcome';

// 自定義 404 覆蓋
$route['404_override'] = 'errors/error404';
  • default_controller:未指定控制器時的回退,未設定會噴 404
  • 404_override:控制器不存在時的處理器,不影響 show_404() 方法

重要提醒

  • 規則勿加前後斜線
  • 保留路由必須置於萬用字元/正則規則之前
  • :any 會貪婪匹配,謹慎排序避免誤攔截

善用路由系統能建立乾淨、語意化的 URL 結構,提升 SEO 與使用者體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved