首頁  >  文章  >  php框架  >  thinkphp是怎麼載入路由

thinkphp是怎麼載入路由

步履不停
步履不停原創
2019-07-01 10:48:063078瀏覽

thinkphp是怎麼載入路由

ThinkPHP URL 路由簡介

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

範例

原本的URL 為:

#http://www.5idev.com/index.php/Products/Show/category/ 5/id/123

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

http://www.5idev.com/index.php/product/5/123

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

http://www.5idev.com/product/5/123

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

提示:使用 Apache 的 URL Rewrite 規則也能達到 URL 自訂的功能,在此就不展開了,有興趣的請參考 Apache Rewrite 相關的文章。

ThinkPHP 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...')
格式3:'路由規則'= >'外部位址'
格式4:'路由規則'=>array('外部位址','重定向程式碼')

語法說明

路由規則即是我們要在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 解析。

ThinkPHP URL 路由實例

以本文開始的範例為例,看該路由是如何定義的。在專案設定檔Conf/config.php 定義以下規則:

//路由定義
'URL_ROUTE_RULES'=> array(
   'product/:category\d/:id\d '=>'Products/Show', //規則路由
),

#當我們造訪以下這個位址的時候:

http://www.5idev .com/index.php/product/5/123

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

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

'product/:category\d/:id\d'=>'Products/Show?status =1', //規則路由

也即符合下面這個URL 位址:

#http://www.5idev.com/index.php/product/5/123 /1

上面都是以格式1來定義的路由,在有額外參數的情況下,可以轉換為第2種定義格式:

'product/:category \d/:id\d'=>array('Products/Show','status=1')

上面的路由規則中\d 表示只符合數字,當不加此約束時,則可匹配所有字符,這也是預設情況。如果要嚴格約定傳入的參數格式,請使用正規路由定義規則。

路由格式:外部位址

對於路由格式3 和格式4,則是偵測到符合的路由格式,則跳到外部位址,差異是格式4 有重定向程式碼,如301 代表永久重定向。

更多ThinkPHP相關技術文章,請造訪ThinkPHP使用教學欄位進行學習!

以上是thinkphp是怎麼載入路由的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn