thinkphp學習筆記6 url模式

2022-02-11 05:18:14 字數 2430 閱讀 6272

入口檔案是應用的唯一入口,因為可以多入口,每個應用可以對應乙個入口檔案,系統會從rul引數中解析當前請求的模組,控制器,操作。thinkphp是區分大小寫的,考慮到linux是區分大小寫的,所以在thinkphp中模組,控制器,模型等都是區分大小寫的,並且使用駝峰命名規則。

如果我們直接訪問入口檔案index.php,url中沒有給出模組,控制器,操作,系統會預設訪問home模組下的index控制器下的index操作,因此下面的兩種訪問方法得到的結果是一樣的:

這種url模式是pathinfo模式,thinkphp支援四種url模式,列表如下:

url模式    url_model設定 

普通模式      0 

pathinfo模式   1 

rewrite模式    2 

相容模式     3

普通模式

普通模式是使用傳統的get傳參來指定當前的模組,控制,操作例如:http://servername/?m=home&c=user&a=login&var=value,經我實驗,即使把url_model設定成1,2,3還是可以使用這種get傳參的方式來發訪問,path_info變數放在thinkphp\thinkphp\conf\convention.php檔案裡,我的設定如下:

圖1訪問介面如下:

圖2修改模組為home模組訪問結果如下:

圖3這個感覺有點亂了,既然設定成3le,還是可以使用第一種模式呢?

path_info模式

pathinfo模式是系統的預設url模式,提供了最好的seo支援,系統內部已經做了環境的相容處理,所以能夠支援大多數的主機環境。對應上面的url模式,pathinfo模式下面的url訪問位址是: http://localhost/index.php/home/user/login/var/value/

還可以修改引數的分分隔符,例如我現在配置如下:

圖4現在可以使用下滑下劃線來區分引數了,如下:

圖5rewrite模式

rewrite模式是在pathinfo模式的基礎上新增了重寫規則的支援,可以去掉url位址裡面的入口檔案index.php,但是需要額外配置web伺服器的重寫規則。如果是apache則需要在入口檔案的同級新增.htaccess檔案,內容如下:

rewriteengine on 

rewritecond % !-d

rewritecond % !-f

rewriterule ^(.*)$ index.php/$1 [qsa,pt,l]

相容模式相容模式是用於不支援pathinfo的特殊環境,url位址是: http://localhost/?s=/home/user/login/var/value ,什麼情況下不支援pathinifo?作者沒有提到

可以更改相容模式變數的名稱定義,例如:

'var_pathinfo' => 'pathinfo'pathinfo引數分隔符對相容模式依然有效,例如:

// 更改pathinfo引數分隔符'url_pathinfo_depr'=>'-', 使用以上配置的話,url訪問位址可以變成: http://localhost/?s=/home-user-login-var-value

相容模式配合web伺服器重寫規則的定義,可以達到和rewrite模式一樣的url效果。

例如,我們在apache下面的話,.htaccess檔案改成如下內容:

rewriteengine on 

rewritecond % !-d

rewritecond % !-f

rewriterule ^(.*)$ index.php?s=/$1 [qsa,pt,l]

這個和上面的rewrite類似只有最後一句不同,乙個是rewriterule ^(.*)$ index.php/$1 [qsa,pt,l],乙個是rewriterule ^(.*)$ index.php?s=/$1 [qsa,pt,l],討厭的正規表示式!不懂

ThinkPHP學習筆記

thinkphp中的配置檔案 慣例配置 專案配置 除錯配置 分組配置 讀取配置 動態配置 擴充套件配置 慣例配置 是系統內建的乙個配置檔案 conf convention.php 專案配置 位於專案配置檔案目錄conf下面,檔名是config.php 除錯配置 在開啟除錯模式的狀態下,可以給專案設定...

ThinkPHP學習筆記

當url case insensitive設定為true的時候表示url位址不區分大小寫,這個也是框架在部署模式下面的預設設定。url case insensitive true,支援對變數的型別檢測,但僅僅支援數字型別的約束定義,例如 blog id d blog read 因為操作方法就是控制器...

thinkphp學習筆記 1

框架用起來不難,關鍵在於理解原理,深入其中。不太喜歡用框架,更喜歡原生態,如wordpress般,亂且爽,但wordpress太深。框架用在多人開發,快捷開發,高效。參考thinkphp快速入門 1.在www目錄下建立測試目錄tp demo,並貼上thinkphp到該目錄下 2.建立入口檔案如ind...