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

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

PATHINFO模式html

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

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

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

那麼在path_info.php裏面我就只寫了一個例子apache

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

會輸出服務器

/index/index/index.htmlapp

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

 

pathinfo的兩種模式

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

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

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

 

四種路徑訪問模式

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

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

二、值爲1   叫作pathinfo模式。如:http://localhost/index.php/模塊/方法

三、值爲2   叫作rewrite重寫(僞靜態) 能夠本身寫相關的rewrite規則,也可使用系統爲咱們提供的rewrite規則隱藏掉index.php,生成:http://localhost/模塊/方法

四、值爲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

相關文章
相關標籤/搜索