CodeIgniter架構URL路由總結,codeigniter架構url_PHP教程

來源:互聯網
上載者:User

CodeIgniter架構URL路由總結,codeigniter架構url


URI 路由

一般來說,URI字串有著和它唯一對應的控制器(controller)類/方法。URI的各個部分是如下模式(pattern):
複製代碼 代碼如下:
example.com/class/function/id/

然而在一些例子中,你也許想重新導向這種關係來調用一個不同的類/方法(class/function),而不是與URL一一對應(的調用).

例如,你可能想使你的URL採用這種原型(prototype):
複製代碼 代碼如下:
example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/

一般情況下,URL的第二個部分表示方法名,不過在上面的例子中,它表示一個產品的ID。CodeIgniter可以實現這個功能,讓使用者可以重新定向(remap)URI處理常式.

設定你自己的路由規則

  路由規則定義在application/config/routes.php 檔案中. 在此檔案中,你可以看到一個名為 $route的數組,它可以讓你定義你自己的路由規則。 定義可以用兩種方式: 萬用字元(wildcards) 或者 Regex(Regular Expressions)

萬用字元

  一個典型的萬用字元路由看起來是這樣的:
複製代碼 代碼如下:
$route['product/(:num)'] = "catalog/product_lookup";

  在一個路由中,數組的鍵包含著被匹配的URI,而數組的值包含著路由將被重新導向的目的地.在上面的例子中,如果單詞“product”出現在URL的第一個部分中,而且數字(:num)出現在URI的第二個部分中,"catalog"類和"product_lookup"方法將被替代使用(即將被重新導向).

  你可以匹配文字的值或者使用以下兩種萬用字元類型:

  :num 將匹配一個只包含有數位segment(段).

  :any 將匹配任何字元(可以是多個segment段).可以匹配多個值,如:

  $route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5"; //將整條url上的每一個參數全部傳遞給catalog控制器下的 product_lookup方法。

  注意: 路由將會按照定義的順序來運行.高層的路由總是優先於低層的路由.

例子

下面是一些簡單的例子:

複製代碼 代碼如下:
$route['journals'] = "blogs";

  如果URL的第一個分段(類名)是關鍵字"journals",那麼將會重新導向到"blogs"類中處理.

複製代碼 代碼如下:
$route['blog/joe'] = "blogs/users/34";

  如果URL的前兩個分段是"blog"和"joe",那麼將會重新導向到"blogs"類的"users"方法中處理.並且將ID"34"設為參數.

複製代碼 代碼如下:
$route['product/(:any)'] = "catalog/product_lookup";

  當"product"作為URL中第一個分段時, 無論第二分段是什麼都將被重新導向到"catalog"類的"product_lookup"方法.

複製代碼 代碼如下:
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

  當“product”作為 URL 中第一個分段時,如果第二分段是數字,則將被重新導向到“catalog”類,並傳遞所匹配的內容到“product_lookup_by_id”方法中。

  重要提示: 不要在前面或後面加"/".

  Regex

  如果你喜歡可以使用Regex來自訂你的路由規則. 任何有效Regex都是被允許的, 甚至逆向引用.

  注意: 如果你使用逆向引用請將雙反斜線文法替換為美元符文法(\\1 替換為 $1).

  一個典型的Regex看起來像下面的樣子:
複製代碼 代碼如下:
  $route['products/([a-z]+)/(\d+)'] = "$1/id_$2";

上例中, 類似於 products/shirts/123 的URI 將換成調用 shirts 控制器類的 id_123 方法.

你也可以混合使用萬用字元與Regex.

系統保留的路由

系統會保留兩個路由:

第一個為系統預設的路由:

複製代碼 代碼如下:
$route['default_controller'] = 'welcome';

這個路由表明了當URI中不包含要訪問的類和控制器資訊的(即只訪問根目錄的情況,如http://localhost/ci)將要載入哪個控制器。上例中,系統將載入 "welcome" 這個類(控制器)。你應該保證設定一個預設路由,不然你的首頁將會顯示 404 錯誤。

第二個為404頁面的路由:
複製代碼 代碼如下:
$route['404_override'] = '';

這個路由辨別碼了如果請求的控制器無法訪問的時候將載入哪個控制器。它相當於覆蓋了預設的404錯誤頁面(即提供了自己定義404頁面的功能)。但它不會影響show_404()這個方法,這個方法依然會載入預設的位於application/errors/error_404.php的error_404.php頁面。

重要: 保留的路由應該在所有萬用字元或Regex路由之前定義。


PHP CodeIgniter架構中怎擷取當前頁面的URL

//use url helper
$this->load->helper('url');
current_url = current_url();
 

怎刪除CodeIgniter架構中URL段裡面的indexphp,執行個體,手冊上的木看明白,自己寫了個dome測試也不對

要想實現這個只能用偽靜態來實現。.htaccess這個配置規則實現
 

http://www.bkjia.com/PHPjc/874110.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/874110.htmlTechArticleCodeIgniter架構URL路由總結,codeigniter架構url URI 路由 一般來說,URI字串有著和它唯一對應的控制器(controller)類/方法。URI的各個部分是如下...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.