thinkphp框架url規則【1】

我們知道ThinkPHP支持四種URL模式,可以通過設置URL_MODEL參數來定義,包括普通模式、PATHINFO、REWRITE和兼容模式。
一、普通模式 :設置URL_MODEL 爲0
採用傳統的URL參數模式
http://<serverName>/appName/?m=module&a=action&id=1
普通URL模式和在關閉URL_DISPATCH_ON的情況下面的效果是一樣的,只是普通URL模式還具有路由功能。如果你並不需要使用路由功能,而且還在使用普通模式的話,建議直接關閉URL_DISPATCH_ON,效率會更高。
二、PATHINFO模式 :設置URL_MODEL 爲1
默認情況使用PATHINFO模式,ThinkPHP內置強大的PATHINFO支持,提供靈活和友好URL支持。PATHINFO模式根據不同的設置還包括普通模式和智能模式兩種:
普通模式 設置URL_PATHINFO_MODEL 參數爲1
該模式下面URL參數沒有順序,例如
http://<serverName>/appName/m/module/a/action/id/1
http://<serverName>/appName/a/action/id/1/m/module
以上URL等效
智能模式 設置URL_PATHINFO_MODEL 參數爲2 (系統默認的模式)
自動識別模塊和操作,例如
http://<serverName>/appName/module/action/id/1/  或者
http://<serverName>/appName/module,action,id,1/
在智能模式下面,第一個參數會被解析成模塊名稱(或者路由名稱,下面會有描述),第二個參數會被解析成操作(在第一個參數不是路由名稱的前提下),後面的參數是顯式傳遞的,而且必須成對出現,例如:
http://<serverName>/appName/module/action/year/2008/month/09/day/21/
其中參數之間的分割符號由URL_PATHINFO_DEPR參數設置,默認爲”/”,例如我們設置URL_PATHINFO_DEPR爲“-”的話,就可以使用下面的URL訪問
http://<serverName>/appName/module-action-id-1/
注意不要使用”:” 和”&”符號進行分割,該符號有特殊用途。
略加修改,就可以展示出富有詩意的URL,呵呵~
如果想要簡化URL的形式可以通過路由功能(後面會有描述)以及空模塊和空操作。
在PATH_INFO模式下面,會把相關參數轉換成GET變量,以及併入REQUEST變量,因此不妨礙URL裏面的GET和REQUEST變量獲取。
三、REWRITE模式: 設置URL_MODEL 爲2
該URL模式和PATHINFO模式功能一樣,除了可以不需要在URL裏面寫入口文件,和可以定義.htaccess 文件外。在開啓了Apache的URL_REWRITE模塊後,就可以啓用REWRITE模式了,具體參考下面的URL重寫部分。
四、兼容模式: 設置URL_MODEL 爲3
兼容模式是普通模式和PATHINFO模式的結合,並且可以讓應用在需要的時候直接切換到PATHINFO模式而不需要更改模板和程序。兼容模式URL可以支持任何的運行環境。
兼容模式的效果是:
http://<serverName>/appName/?s=/module/action/id/1/
並且也可以支持參數分割符號的定義,例如在URL_PATHINFO_DEPR爲~的情況下,下面的URL有效:
http://<serverName>/appName/?s=module~action~id~1
其實是利用了VAR_PATHINFO參數,用普通模式的實現模擬了PATHINFO的模式。但是兼容模式並不需要自己傳s變量,而是由系統自動完成URL部分。正是由於這個特性,兼容模式可以和PATHINFO模式之間直接切換,而不需更改模板文件裏面的URL地址連接。
某些服務器環境不能良好的支持PATHINFO,或者需要進行額外的配置纔可以支持,如果你確認你的服務器環境不支持PATHINFO,可以選擇普通模式或者兼容模式URL運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章