ThinkPHP URL 路由簡介

2021-09-26 10:04:33 字數 1776 閱讀 2453

簡單的說,url 路由就是允許你在一定規則下定製你需要的 url 樣子,以達到美化 url ,提高使用者體驗,也有益於搜尋引擎收錄的目的。

原本的 url 為:

該 url 的本意是顯示第 5 分類中 id 為 123 的產品。經過 url 路由改寫後 url 可以為:

如果使用 .htaccess 檔案的 rewrite 規則再把入口檔案隱藏,則上面的 url 可以進一步簡化為:

這個 url 位址就相對比較簡單易容。

在 thinkphp 中要使用 url 路由功能,需要做如下配置:

在專案配置檔案 conf/config.php 裡面開啟路由功能(設定為 true):

'url_router_on'	=> true,
與 2.x 版本不同,3.0 路由規則定義於專案配置檔案 config.php 內,格式為陣列格式,具體定義規則又分為規則路由和正則路由。規則路由語法如下:

格式1:'路由規則'=>'[分組/模組/操作]?額外引數1=值1&額外引數2=值2...'

格式2:'路由規則'=>array('[分組/模組/操作]','額外引數1=值1&額外引數2=值2...')

路由規則即是我們要在 url 中顯示出來規則,後面元素值部分是實際的 url 位址及引數

路由規則中如果以 : 開頭,表示動態變數,否則為靜態位址

格式2的額外引數可以傳入陣列或者字串

路由規則支援變數的數字約束定義,例如:'product/:id\d'=>'products/show'

路由規則非數字變數支援排除,例如 'news/:cate^add|edit|delete'=>'news/category'

路由規則支援完整匹配定義,例如:'product/:id\d$'=>'products/show'

路由規則中的靜態位址部分不區分大小寫

外部位址中如果要引用動態變數, 採用 :1、:2 的方式

規則路由可以支援 全動態和動靜結合定義,例如 ':user/blog/:id'=>'home/blog/user'

這些規則及語法說明比較晦澀難懂,下面會有例項來對照以便理解上述路由規則及語法說明。

如果在配置檔案裡定義了路由開啟功能,系統在執行 dispatch 解析的時候,會判斷當前 url 是否存在定義的路由名稱,如果有就會按照定義的路由規則來進行 url 解析。

//路由定義

'url_route_rules'=> array(

'product/:category\d/:id\d'=>'products/show', //規則路由

),

會將該位址解析到 products 模組的 show 操作,並傳入 get 引數 category=5&id=123。

如果有額外的固定引數,如 status=1,可以定義路由:

'product/:category\d/:id\d'=>'products/show?status=1', //規則路由
/1
上面都是按格式1來定義的路由,在有額外引數的情況下,可以轉換為第2種定義格式:

'product/:category\d/:id\d'=>array('products/show','status=1')
上面的路由規則中 \d 表示只匹配數字,當不加此約束時,則可匹配所有字元,這也是預設情況。如果要嚴格約定傳入的引數格式,請使用正則路由定義規則。

對於路由格式 3 和格式 4,則是檢測到匹配的路由格式,則跳轉到外部位址,區別是格式 4 有重定向**,如 301 代表永久重定向。

簡介angular路由

ngroute是乙個angularjs的模組。其不是在angularjs的核心庫當中。在使用ngroute的時候,實際上,我們是在應用的主模組中引入ngroute模組並新增 routeprovider服務到主模組的config方法中來達到我們的目標。這與其他一些庫的使用方式是類似的,如ng grid...

ThinkPHP URL模式和URL重寫

現在用的版本是tp3.1.3,這兩天總是遇到notfound的錯誤,解析路徑錯誤,所以認真研究了一下手冊,發現問題出在url模式上面。url模式 一般是使用u方法來生成路徑,u方法的定義規則如下 方括號內引數根據實際應用決定 u 分組 模組 操作 引數 引數 偽靜態字尾 是否跳轉 顯示網域名稱 如果...

路由黑洞與黑洞路由簡介

1.路由黑洞 路由黑洞一般是在網路邊界做彙總回程路由的時候產生的一種不太願意出現的現象,就是彙總的時候有時會有一些網段並不在內網中存在,但是又包含在彙總後的網段中,如果在這個彙總的邊界裝置上同時還配置了預設路由,就可能出現一些問題。這時,如果有資料報發向那些不在內網出現的網段 但是又包含在彙總網段 ...