CodeIgniter URLs
CodeIgniter 設計的 URLs 對搜尋引擎及人工閱讀是友善的。相較於使用傳統的查詢字串(query string)的方法,CodeIgniter 則使用的是分段式(segment-based)的方法:
example.com/news/article/my_article
注意: 傳統 Query string URLs 的方式可以參考底下的說明,還是可以依需求選擇性的啟動。
分段式 URI
分段式的 URL 遵循模型-檢視-控制器(MVC)模式,通常呈現如下:
example.com/class/function/ID
- 第一段代表的是控制器(controller)啟動的類別(class)。
- 第二段代表的是類別(class)的 函數(function) 或者是 method 被呼叫使用。
- 第三段之後,代表的是 ID 或是任何變數準備要傳遞給控制器(controller)所使用。
URI 類別 以及 URL 補助函數 兩者裡頭有 些函數可以讓你輕鬆的處理 URI 資料,除此之外,你的 URLs 可以用 URI Routing 對映(remap)的功能,使用上將會更有彈性。
移除 index.php 檔案
index.php 這個檔案通常包含在你的 URLs 裡頭:
example.com/index.php/news/article/my_article
你可以輕鬆的把 index.php 用 .htaccess 移除,只消對 index.php 設定些簡單的規則。請參考底下的範例。使用 negative 方式把全部都導向,除了某些制定的項目:
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|$)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
在上述的範例中,像是 index.php、images、robots.txt 的全部 HTTP request 都會被當成是 request index.php 檔案。
加入 URL 後置字串
config/config.php 檔案可以設定後置字串,讓所有的由 CodeIgniter 產生的 URLs 都附戴上去。舉例來說,假如某個 URL 如下:
example.com/index.php/products/view/shoes
你可以依照需求增加後置字串,像加上 .html 讓你的網址看起來像底下的型式:
example.com/index.php/products/view/shoes.html
啟動 Query Strings
某些時候,你也許想要使用 query strings URLs:
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,這個功能就會啟動。
index.php?c=controller&m=method
請注意: 如果你堅持要使用 query strings 而不使用 URL 補助函數的話,你就必須要建立自己的 URLs。因為當初我們 進行設計某些補助函數的時候,就是採用分段式的 URLs,像是些會自建 URLs 的補助函數以及 form 補助函數 都是使用分段式的 URLs 設計。