CodeIgniter URL

2018-02-24 15:40 更新

CodeIgniter URL

默認(rèn)情況下,CodeIgniter 中的 URL 被設(shè)計(jì)成對(duì)搜索引擎和人類(lèi)友好。 不同于使用標(biāo)準(zhǔn)的 “查詢字符串” 方法,CodeIgniter 使用基于段的方法:

example.com/news/article/my_article

注解
在 CodeIgniter 中也可以使用查詢字符串的方法,參見(jiàn)下文。

URI 分段

如果遵循模型-視圖-控制器模式,那么 URI 中的每一段通常表示下面的含義:

example.com/class/function/ID
  1. 第一段表示要調(diào)用的控制器?類(lèi)?;
  2. 第二段表示要調(diào)用的類(lèi)中的?函數(shù)?或?方法?;
  3. 第三段以及后面的段代表傳給控制器的參數(shù),如 ID 或其他任何變量;

URI 類(lèi)?和?URL 輔助函數(shù)?包含了一些函數(shù)可以讓你更容易的處理 URI 數(shù)據(jù),另外,你的 URL 可以通過(guò)?URI 路由?進(jìn)行重定向從而得到更大的靈活性。

移除 URL 中的 index.php

默認(rèn)情況,你的 URL 中會(huì)包含?index.php?文件:

example.com/index.php/news/article/my_article

如果你的 Apache 服務(wù)器啟用了?mod_rewrite?,你可以簡(jiǎn)單的通過(guò)一個(gè) .htaccess 文件再加上一些簡(jiǎn)單的規(guī)則就可以移除 index.php 了。下面是這個(gè)文件的一個(gè)例子, 其中使用了 "否定條件" 來(lái)排除某些不需要重定向的項(xiàng)目:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

在上面的例子中,除已存在的目錄和文件,其他的 HTTP 請(qǐng)求都會(huì)經(jīng)過(guò)你的 index.php 文件。

注解
這些規(guī)則并不是對(duì)所有 Web 服務(wù)器都有效。
確保使用上面的規(guī)則排除掉你希望能直接訪問(wèn)到的資源。

添加 URL 后綴

在你的?config/config.php?文件中你可以指定一個(gè)后綴,CodeIgniter 生成 URL 時(shí)會(huì)自動(dòng)添加上它。譬如,一個(gè)像這樣的 URL:

example.com/index.php/products/view/shoes

你可以添加一個(gè)后綴,如:.html?,這樣頁(yè)面看起來(lái)就是這個(gè)樣子:

example.com/index.php/products/view/shoes.html

啟用查詢字符串

有些時(shí)候,你可能更喜歡使用查詢字符串格式的 URL:

index.php?c=products&m=view&id=345

CodeIgniter 也支持這個(gè)格式,你可以在?application/config.php?配置文件中啟用它。 打開(kāi)你的配置文件,查找下面這幾項(xiàng):

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

你只要把 "enable_query_strings" 參數(shù)設(shè)為 TRUE 即可啟用該功能。然后通過(guò)你設(shè)置的 trigger 關(guān)鍵字來(lái)訪問(wèn)你的控制器和方法:

index.php?c=controller&m=method

注解
如果你使用查詢字符串格式的 URL,你就必須自己手工構(gòu)造 URL 而不能使用 URL 輔助函數(shù)了(以及其他生成 URL 相關(guān)的庫(kù),譬如表單輔助函數(shù)),這是由于這些庫(kù)只能處理 分段格式的 URL 。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)