Thinkphp5——pathinfo的訪問模式、路徑訪問模式


 tp5訪問入口文件的時候是,訪問public目錄下的index.php,那么她真正訪問的url到底是什么?如何去訪問其他頁面,實際上她默認使用的PATH_INFO模式進行訪問。

PATHINFO模式

想想在我使用tp3.2的時候,也是利用的path_info去訪問,再往前剛接觸的php的時候,我們寫的php腳本訪問的時候就是按照文件位置去訪問的對應url,例如http://localhost/test/a/b/c.php,確實這種就是普通的路由訪問,直接按照url去找你對應文件夾下的php然后執行。

那么pathinfo的模式, 其url的路徑實際並不存在,apache或者nginx等通過一定的手段將不存在的路徑

保存在$_SERVER['PATH_INFO']環境變量里面,舉個例子http://localhost/path_info.php/index/index/index.html?id=1;

那么在path_info.php里面我就只寫了一個例子

<?php echo $_SERVER['PATH_INFO']; ?>

會輸出

/index/index/index.html

這一段就是pathinfo模式,去訪問不存在的路徑,會存在一個環境變量$_SERVER['PATH_INFO'],后面的id=1作為$_GET['id']傳入頁面。

 

pathinfo的兩種模式

訪問\application\index\controller\index.phptest方法,下面這兩種模式是相等的

1、http://localhost/index.php?m=Index&a=test

2、http://localhost/index.php/Index/test

 

四種路徑訪問模式

config目錄下邊來做修改 URL_MODEL的值,分別表述如下:

1、值為0   叫做普通模式。如:http://localhost/index.php?m=模塊&a=方法

2、值為1   叫做pathinfo模式。如:http://localhost/index.php/模塊/方法

3、值為2   叫做rewrite重寫(偽靜態) 可以自己寫相關的rewrite規則,也可以使用系統為我們提供的rewrite規則隱藏掉index.php,生成:http://localhost/模塊/方法

4、值為3   叫做兼容模式。當服務器上面不支持pathinfo模式的時候,但是你又在之前的路徑訪問格式上面,全部用的是pathinfo格式。那么它會提示你路徑格式不正確。那么,你就可以用標號為3的兼容模式來處理。他的路徑訪問類似於http://localhost/index.php?s=模塊/方法 

 

TP5默認path_info模式

好吧,轉到正題上,那么tp5的url是怎么弄的?

實際上tp就是根據PATHINFO,從里面提取到模塊名,控制器名,操作方法名,將剩余的部分轉換成為$_GET。

 

URL大小寫問題

最后,再看一下這個讓人迷惑的地方,很多時候報錯就是你的url訪問找不到你的控制器類

tp5默認url不區分大小寫,url里面的模塊/控制器/操作名會自動轉化大小寫,控制器在最后調用的時候會轉化為駝峰法處理

下面我關閉url轉化控制器和操作名,來訪問

 

 

 

 

順道看一下日志吧

位置:(D:\wamp\www\Tp5\runtime\log\)

日志在項目開發的時候還是很重要的,看看日志也能幫助理解

 

小結
[1]thinkphp5默認使用pathinfo模式來解析url進行訪問

[2]模塊目錄小寫,控制器名和類名一致采用大駝峰,后綴是.php,操作方法采用小駝峰書寫

[3]我建議關閉“是否自動轉換URL中的控制器和操作名”,也就是config.php配置文件里面url_convert設置為false,大小寫嚴格一些,方便以后上線在linux運行

[4]永遠記住,日志很重要


原文鏈接:https://blog.csdn.net/Tacks/article/details/85121188


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM