# CodeIgniter URL
默認情況下,CodeIgniter 中的 URL 被設計成對搜索引擎和人類友好。 不同于使用標準的 “查詢字符串” 方法,CodeIgniter 使用基于段的方法:
~~~
example.com/news/article/my_article
~~~
>[info] 注解
> 在 CodeIgniter 中也可以使用查詢字符串的方法,參見下文。
## URI 分段
如果遵循模型-視圖-控制器模式,那么 URI 中的每一段通常表示下面的含義:
~~~
example.com/class/function/ID
~~~
1. 第一段表示要調用的控制器?**類**?;
2. 第二段表示要調用的類中的?**函數**?或?**方法**?;
3. 第三段以及后面的段代表傳給控制器的參數,如 ID 或其他任何變量;
[URI 類](http://codeigniter.org.cn/user_guide/libraries/uri.html)?和?[URL 輔助函數](http://codeigniter.org.cn/user_guide/helpers/url_helper.html)?包含了一些函數可以讓你更容易的處理 URI 數據,另外,你的 URL 可以通過?[URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html)?進行重定向從而得到更大的靈活性。
## 移除 URL 中的 index.php
默認情況,你的 URL 中會包含?**index.php**?文件:
~~~
example.com/index.php/news/article/my_article
~~~
如果你的 Apache 服務器啟用了?mod_rewrite?,你可以簡單的通過一個 .htaccess 文件再加上一些簡單的規則就可以移除 index.php 了。下面是這個文件的一個例子, 其中使用了 "否定條件" 來排除某些不需要重定向的項目:
~~~
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
~~~
在上面的例子中,除已存在的目錄和文件,其他的 HTTP 請求都會經過你的 index.php 文件。
>[info] 注解
> 這些規則并不是對所有 Web 服務器都有效。
> 確保使用上面的規則排除掉你希望能直接訪問到的資源。
## 添加 URL 后綴
在你的?**config/config.php**?文件中你可以指定一個后綴,CodeIgniter 生成 URL 時會自動添加上它。譬如,一個像這樣的 URL:
~~~
example.com/index.php/products/view/shoes
~~~
你可以添加一個后綴,如:**.html**?,這樣頁面看起來就是這個樣子:
~~~
example.com/index.php/products/view/shoes.html
~~~
## 啟用查詢字符串
有些時候,你可能更喜歡使用查詢字符串格式的 URL:
~~~
index.php?c=products&m=view&id=345
~~~
CodeIgniter 也支持這個格式,你可以在?**application/config.php**?配置文件中啟用它。 打開你的配置文件,查找下面這幾項:
~~~
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
~~~
你只要把 "enable_query_strings" 參數設為 TRUE 即可啟用該功能。然后通過你設置的 trigger 關鍵字來訪問你的控制器和方法:
~~~
index.php?c=controller&m=method
~~~
>[info] 注解
> 如果你使用查詢字符串格式的 URL,你就必須自己手工構造 URL 而不能使用 URL 輔助函數了(以及其他生成 URL 相關的庫,譬如表單輔助函數),這是由于這些庫只能處理 分段格式的 URL 。
- 歡迎使用 CodeIgniter
- 安裝說明
- 下載 CodeIgniter
- 安裝說明
- 從老版本升級
- 疑難解答
- CodeIgniter 概覽
- CodeIgniter 將從這里開始
- CodeIgniter 是什么?
- 支持特性
- 應用程序流程圖
- 模型-視圖-控制器
- 設計與架構目標
- 教程 - 內容提要
- 加載靜態內容
- 讀取新聞條目
- 創建新聞條目
- 結束語
- 常規主題
- CodeIgniter URL
- 控制器
- 保留名稱
- 視圖
- 模型
- 輔助函數
- 使用 CodeIgniter 類庫
- 創建類庫
- 使用 CodeIgniter 驅動器
- 創建驅動器
- 創建核心系統類
- 創建附屬類
- 鉤子 - 擴展框架核心
- 自動加載資源
- 公共函數
- 兼容性函數
- URI 路由
- 錯誤處理
- 網頁緩存
- 程序分析
- 以 CLI 方式運行
- 管理你的應用程序
- 處理多環境
- 在視圖文件中使用 PHP 替代語法
- 安全
- PHP 開發規范
- 類庫參考
- 基準測試類
- 緩存驅動器
- 日歷類
- 購物車類
- 配置類
- Email 類
- 加密類
- 加密類(新版)
- 文件上傳類
- 表單驗證類
- FTP 類
- 圖像處理類
- 輸入類
- Javascript 類
- 語言類
- 加載器類
- 遷移類
- 輸出類
- 分頁類
- 模板解析類
- 安全類
- Session 類
- HTML 表格類
- 引用通告類
- 排版類
- 單元測試類
- URI 類
- 用戶代理類
- XML-RPC 與 XML-RPC 服務器類
- Zip 編碼類
- 數據庫參考
- 數據庫快速入門: 示例代碼
- 數據庫配置
- 連接你的數據庫
- 查詢
- 生成查詢結果
- 查詢輔助函數
- 查詢構造器類
- 事務
- 數據庫元數據
- 自定義函數調用
- 數據庫緩存類
- 數據庫工廠類
- 數據庫工具類
- 數據庫驅動器參考
- 輔助函數參考
- 數組輔助函數
- 驗證碼輔助函數
- Cookie 輔助函數
- 日期輔助函數
- 目錄輔助函數
- 下載輔助函數
- 郵件輔助函數
- 文件輔助函數
- 表單輔助函數
- HTML 輔助函數
- 語言輔助函數
- Inflector 輔助函數
- 數字輔助函數
- 路徑輔助函數
- 安全輔助函數
- 表情輔助函數
- 字符串輔助函數
- 文本輔助函數
- 排版輔助函數
- URL 輔助函數
- XML 輔助函數
- 向 CodeIgniter 貢獻你的力量