CodeIgniter URL

2020-08-19 10:41 更新

在默認(rèn)情況下,CodeIgniter 中的 URL 被設(shè)計成對搜索引擎和用戶友好的樣式。 不同于使用傳統(tǒng)的在動態(tài)系統(tǒng)中使用代詞的標(biāo)準(zhǔn) “查詢字符串” 的方式,CodeIgniter 使用基于段的方法:

  example.com/news/article/my_article

URI 分段

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

  example.com/class/method/ID

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

URI 類URL 輔助函數(shù) 包含了一些函數(shù)可以讓你更容易的處理 URI 數(shù)據(jù)。此外,可以通過 URI 路由 的方式進行重定向你的 URL 從而使得程序更加靈活。

移除 index.php 文件

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

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

如果你的服務(wù)器支持重寫 URL ,那么通過 URL 重寫,我們可以輕易的去除這個文件。在不同的服務(wù)器中,處理方式各異,故而如下我們主要展示兩個最為通用的Web服務(wù)器。

Apache服務(wù)器

Apache需要開啟 mod_rewrite 擴展。當(dāng)開啟時,我們可以使用一個 .htaccess 文件以及一些簡單的規(guī)則來實現(xiàn) URL 重寫。如下為這個文件的一個樣例,其中使用了”否定“方法來排除某些不需要重定向的項目:

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

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

注解

這些規(guī)則并不是對所有服務(wù)器配置都有效。
確保使用上面的規(guī)則時,排除掉那些你希望能直接訪問到的資源。

NGINX

在NGINX中,我們可以定義一個 location 塊并用 try_files 導(dǎo)向來取得如上文中 Apache 配置一樣的效果:

  location / {
      try_files $uri $uri/ /index.php/$args;
  }

服務(wù)器將會首先尋找符合對應(yīng) URI 的文件或目錄(對于每個文件,通過根目錄和別名目錄來構(gòu)建其完整的路徑),然后再將其他的請求發(fā)送至 index.php 文件中。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號