日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ThinkPHP的四种URL模式 URL_MODEL

發布時間:2023/12/24 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 ThinkPHP的四种URL模式 URL_MODEL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

路由:訪問項目中具體某個方法的URL地址,簡單理解就是URL地址

在ThinkPHP里系統提供了4種路由形式(之前的路由形式:index.php?p=平臺&c=控制器&a=方法;pca)

總結:pca為平臺、控制器、方法;thinkPHP里mca為分組、控制器、方法

①普通形式路由;

②Pathinfo形式路由;

③Rewrite形式路由;

④兼容形式路由

下面詳解

(1)普通形式路由

也叫get形式路由,所有信息通過get傳遞

路由形式:http://網址/入口文件(index.php)?m=分組&c=控制器名&a=方法&參數名=參數值

例如:訪問Home分組下的User控制器中的test方法,并傳遞一個參數id=1

http://www.1336.com/index.php?m=Home&c=User&a=test&id=1

可以通過$_GET['id']來驗證,輸出1。所以驗證成功

缺點:url傳遞的東西都會顯示出來,既不安全也不好看。所以用的不多

(2)pathinfo()形式路由(thinkPHP的默認路由

路由形式:http://網址/入口文件(index.php)/分組名/控制器名/方法/參數名1/參數值1/參數名n/參數值n

http://www.1336.com/index.php/Home/User/test/id/100

方法里有$_GET['id'],輸出100。所以驗證成功

(3)rewrite路由形式(重寫)

路由形式:http://網址/分組名/控制器名/方法名/參數1/參數值1/參數n/參數值n

與thinkPHP默認的路由形式Pathinfo()形式路由的不同之處就是,缺少了入口文件

注意:該路由形式不能直接使用,需要配置完成才能使用

配置步驟:

1. 配置Apache下的httpd.conf,開啟擴展rewrite重寫模塊;

2. 修改虛擬主機配置文件,文件位于Apache目錄下,conf/extra/httpd-vhosts,加上允許重寫配置。表示允許重寫當前站點

簡單說就是給需要開啟重寫的站點,目錄配置處添加Allowoverride:all

#針對目錄的詳細配置
    <Directory>
        #允許所有訪問
        allow from all
        #允許重寫
        AllowOverride all
        #表示允許站點顯示文件目錄結構
        Options +indexes
    </Directory>

3. 重啟Apache

4. 將ThinkPHP壓縮包中的.htaccess文件復制到入口文件的同級目錄

配置完成后輸入網址驗證,這里還用上面pathinfo的網址,去掉入口文件后刷新,發現輸出100。OK~配置完成

拓展:

PHP的運行模式(5大運行模式):CGI模式(通用網關接口);FastCGI模式(常駐型CGI);CLI(命令行運行);Web模塊模式(Apache等Web服務器運行的模式);ISAPI模式(5.3版本后不再支持)

現在用的環境集成包的模式為Web模塊模式,工作開發中常用FastCGI常駐型模式

綜上,rewrite模式需要Apache支持,一般不推薦使用。除了Apache外服務器軟件還有nginx,lightd等。

(4)兼容路由形式

兼容路由形式結合了普通路由形式、pathinfo路由形式、rewrite路由形式特征

路由形式:http://網址/入口文件?s=/分組名/控制器名/方法名/參數1/參數值1

注意:兼容路由形式只有1個參數:參數名s,后面可以看做s參數值

例如:http://www.1336.com/index.php?s=/Home/User/test/id/100,驗證輸出100,說明訪問成功

(5)拓展:ThinkPHP中路由形式的配置

配置文件ThinkPHP/Conf/convention.php,ThinkPHP慣例配置文件

/* URL設置 */
'URL_CASE_INSENSITIVE'  =>  true,   // 默認false 表示URL區分大小寫 true則表示不區分大小寫
'URL_MODEL'             =>  1,       // URL訪問模式,可選參數0、1、2、3,代表以下四種模式:
// 0 (普通模式); 1 (Pathinfo 模式); 2 (REWRITE  模式); 3 (兼容模式)  默認為Pathinfo 模式

注意:路由形式的配置值,不影響地址欄中輸入其他形式路由訪問。該配置項的值,影響的是ThinkPHP系統封裝的URL組裝函數(U函數)生成url地址的形式

【分享】

ThinkPHP支持四種URL模式,可以通過設置URL_MODEL參數來定義,包括普通模式、PATHINFO、REWRITE和兼容模式。
1.普通模式:'URL_MODEL'=>0,
http://serverName/appName/?m=module&a=action&id=1

2.PATHINFO模式:'URL_MODEL'=>1,(系統默認的模式)
默認使用URL_PATHINFO模式,PATHINFO模式還包括普通模式和智能模式兩種:
PATHINFO普通模式:'PATH_MODEL'=>1,
該模式URL參數沒有順序,例如
http://serverName/appName/m/module/a/action/id/1
http://serverName/appName/a/action/id/1/m/module
PATHINFO智能模式:'PATH_MODEL'=>2, (系統默認的模式)
該模式自動識別模塊和操作,例如
http://serverName/appName/module/action/id/1/
http://serverName/appName/module,action,id,1/
智能模式下,第一個參數會被解析成模塊名稱(或者路由名稱,下面會有描述),第二個參數會被解析成操作(在第一個參數不是路由名稱的前提下),后面的參數是顯式傳遞的,而且必須成對出現,例如:
http://serverName/appName/module/action/year/2000/month/01/day/01/
其中參數之間的分割符由PATH_DEPR參數設置,默認為"/",若設置PATH_DEPR為"^",則
http://serverName/appName/module^action^id^1/
注意不要使用"@" 和"&"符號進行分割,該符號有特殊用途,可能會導致其他的沖突。
如果想要簡化URL的形式可以通過路由功能(后面會有描述),在PATHINFO模式下,會把相關參數轉換成GET變量,以及并入REQUEST變量,因此不妨礙應用里面的以上變量獲取。

3.REWRITE模式:'URL_MODEL'=>2,
該URL模式和PATHINFO模式功能一樣,除了可以不需要在URL里面寫入口文件,和可以定義.htaccess 文件外。
例如,我們可以增加如下的.htaccess內容把所有操作都指向index.php文件。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

4.兼容模式:'URL_MODEL'=>3,
兼容模式是普通模式和PATHINFO模式的結合,并且可以讓應用在需要的時候直接切換到PATHINFO模式而不需要更改模板和程序,基本上可以支持任何的運行環境。
只需要傳入PATHINFO 兼容模式獲取變量VAR_PATHINFO,默認值為s,例如
http://serverName/appName/?s=/module/action/id/1/
會執行和上面的URL等效的操作,并且也可以支持參數分割符號的定義,例如在PATH_DEPR設置為"~"的情況下,下面的URL有效:
http://serverName/appName/?s=module~action~id~1
兼容模式的情況下面模板文件不用做任何更改,保持和PATHINFO模式的寫法一樣,只需要在切換URL模式的時候清空下模板緩存目錄。

.

總結

以上是生活随笔為你收集整理的ThinkPHP的四种URL模式 URL_MODEL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。