入口檔案是應用的單一入口,對應用的所有請求都定向到應用入口檔案,系統會從URL引數中解析當前請求的模組、控制器和操作:
http://serverName/index.php/模組/控制器/操作
這是3.2版本的標準URL格式。
可以透過設定模組繫結或者域名部署等方式簡化URL地址中的模組及控制器名稱。
URL大小寫
ThinkPHP框架的URL是區分大小寫(主要是針對模組、控制器和操作名,不包括應用引數)的,這一點非常關鍵,因為ThinkPHP的命名規範是採用駝峰法(首字母大寫)的規則,而URL中的模組和控制器都是對應的檔案,因此在Linux環境下面必然存在區分大小寫的問題。
框架內建了一個配置引數用於解決URL大小寫的問題,如下:
"URL_CASE_INSENSITIVE" => true,
當URL_CASE_INSENSITIVE設定為true的時候表示URL地址不區分大小寫,這個也是框架在部署模式下面的預設設定。
當開啟除錯模式的情況下,這個引數是false,因此你會發現在除錯模式下面URL區分大小寫的情況。
URL模式
如果我們直接訪問入口檔案的話,由於URL中沒有模組、控制器和操作,因此係統會訪問預設模組(Home)下面的預設控制器(Index)的預設操作(index),因此下面的訪問是等效的:
http://serverName/index.phphttp://serverName/index.php/Home/Index/index
這種URL模式就是系統預設的PATHINFO模式,不同的URL模式獲取模組和操作的方法不同,ThinkPHP支援的URL模式有四種:普通模式、PATHINFO、REWRITE和相容模式,可以設定URL_MODEL引數改變URL模式。
URL_MODEL設定
普通模式 0 PATHINFO模式 1 REWRITE模式 2 相容模式 3
如果你整個應用下面的模組都是採用統一的URL模式,就可以在應用配置檔案中設定URL模式,如果不同的模組需要設定不同的URL模式,則可以在模組配置檔案中設定。
普通模式
普通模式也就是傳統的GET傳參方式來指定當前訪問的模組和操作,例如:
http://localhost/?m=home&c=user&a=login&var=value
m引數表示模組,c引數表示控制器,a引數表示操作(當然這些引數都是可以配置的),後面的表示其他GET引數。
如果預設的變數設定和你的應用變數有衝突的話,你需要重新設定系統配置,例如改成下面的:
"VAR_MODULE" => "module", // 預設模組獲取變數"VAR_CONTROLLER" => "controller", // 預設控制器獲取變數"VAR_ACTION" => "action", // 預設操作獲取變數
上面的訪問地址則變成:
http://localhost/?module=home&controller=user&action=login&var=value
注意,VAR_MODULE只能在應用配置檔案中設定,其他引數可以則也可以在模組配置中設定
PATHINFO模式
PATHINFO模式是系統的預設URL模式,提供了最好的SEO支援,系統內部已經做了環境的相容處理,所以能夠支援大多數的主機環境。對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http://localhost/index.php/home/user/login/var/value/
PATHINFO地址的前三個引數分別表示模組/控制器/操作。
不過,PATHINFO模式下面,依然可以採用普通URL模式的引數方式,例如:
http://localhost/index.php/home/user/login?var=value
依然是有效的
PATHINFO模式下面,URL是可定製的,例如,透過下面的配置:
// 更改PATHINFO引數分隔符"URL_PATHINFO_DEPR"=>"-",
我們還可以支援下面的URL訪問:
http://localhost/index.php/home-user-login-var-value
REWRITE模式
REWRITE模式是在PATHINFO模式的基礎上添加了重寫規則的支援,可以去掉URL地址裡面的入口檔案index.php,但是需要額外配置WEB伺服器的重寫規則。
如果是Apache則需要在入口檔案的同級新增.htaccess檔案,內容如下:
接下來,就可以用下面的URL地址訪問了: http://localhost/home/user/login/var/value
更多環境的URL重寫支援參考部署部分的URL重寫。
相容模式
相容模式是用於不支援PATHINFO的特殊環境,URL地址是: http://localhost/?s=/home/user/login/var/value
可以更改相容模式變數的名稱定義,例如:
"VAR_PATHINFO" => "path"
PATHINFO引數分隔符對相容模式依然有效,例如:
使用以上配置的話,URL訪問地址可以變成: http://localhost/?path=/home-user-login-var-value
相容模式配合Web伺服器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。
例如,我們在Apache下面的話,.htaccess檔案改成如下內容:
就可以和REWRITE模式一樣訪問下面的URL地址訪問了: http://localhost/home/user/login/var/value
入口檔案是應用的單一入口,對應用的所有請求都定向到應用入口檔案,系統會從URL引數中解析當前請求的模組、控制器和操作:
http://serverName/index.php/模組/控制器/操作
這是3.2版本的標準URL格式。
可以透過設定模組繫結或者域名部署等方式簡化URL地址中的模組及控制器名稱。
URL大小寫
ThinkPHP框架的URL是區分大小寫(主要是針對模組、控制器和操作名,不包括應用引數)的,這一點非常關鍵,因為ThinkPHP的命名規範是採用駝峰法(首字母大寫)的規則,而URL中的模組和控制器都是對應的檔案,因此在Linux環境下面必然存在區分大小寫的問題。
框架內建了一個配置引數用於解決URL大小寫的問題,如下:
"URL_CASE_INSENSITIVE" => true,
當URL_CASE_INSENSITIVE設定為true的時候表示URL地址不區分大小寫,這個也是框架在部署模式下面的預設設定。
當開啟除錯模式的情況下,這個引數是false,因此你會發現在除錯模式下面URL區分大小寫的情況。
URL模式
如果我們直接訪問入口檔案的話,由於URL中沒有模組、控制器和操作,因此係統會訪問預設模組(Home)下面的預設控制器(Index)的預設操作(index),因此下面的訪問是等效的:
http://serverName/index.phphttp://serverName/index.php/Home/Index/index
這種URL模式就是系統預設的PATHINFO模式,不同的URL模式獲取模組和操作的方法不同,ThinkPHP支援的URL模式有四種:普通模式、PATHINFO、REWRITE和相容模式,可以設定URL_MODEL引數改變URL模式。
URL模式
URL_MODEL設定
普通模式 0 PATHINFO模式 1 REWRITE模式 2 相容模式 3
如果你整個應用下面的模組都是採用統一的URL模式,就可以在應用配置檔案中設定URL模式,如果不同的模組需要設定不同的URL模式,則可以在模組配置檔案中設定。
普通模式
普通模式也就是傳統的GET傳參方式來指定當前訪問的模組和操作,例如:
http://localhost/?m=home&c=user&a=login&var=value
m引數表示模組,c引數表示控制器,a引數表示操作(當然這些引數都是可以配置的),後面的表示其他GET引數。
如果預設的變數設定和你的應用變數有衝突的話,你需要重新設定系統配置,例如改成下面的:
"VAR_MODULE" => "module", // 預設模組獲取變數"VAR_CONTROLLER" => "controller", // 預設控制器獲取變數"VAR_ACTION" => "action", // 預設操作獲取變數
上面的訪問地址則變成:
http://localhost/?module=home&controller=user&action=login&var=value
注意,VAR_MODULE只能在應用配置檔案中設定,其他引數可以則也可以在模組配置中設定
PATHINFO模式
PATHINFO模式是系統的預設URL模式,提供了最好的SEO支援,系統內部已經做了環境的相容處理,所以能夠支援大多數的主機環境。對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http://localhost/index.php/home/user/login/var/value/
PATHINFO地址的前三個引數分別表示模組/控制器/操作。
不過,PATHINFO模式下面,依然可以採用普通URL模式的引數方式,例如:
http://localhost/index.php/home/user/login?var=value
依然是有效的
PATHINFO模式下面,URL是可定製的,例如,透過下面的配置:
// 更改PATHINFO引數分隔符"URL_PATHINFO_DEPR"=>"-",
我們還可以支援下面的URL訪問:
http://localhost/index.php/home-user-login-var-value
REWRITE模式
REWRITE模式是在PATHINFO模式的基礎上添加了重寫規則的支援,可以去掉URL地址裡面的入口檔案index.php,但是需要額外配置WEB伺服器的重寫規則。
如果是Apache則需要在入口檔案的同級新增.htaccess檔案,內容如下:
接下來,就可以用下面的URL地址訪問了: http://localhost/home/user/login/var/value
更多環境的URL重寫支援參考部署部分的URL重寫。
相容模式
相容模式是用於不支援PATHINFO的特殊環境,URL地址是: http://localhost/?s=/home/user/login/var/value
可以更改相容模式變數的名稱定義,例如:
"VAR_PATHINFO" => "path"
PATHINFO引數分隔符對相容模式依然有效,例如:
// 更改PATHINFO引數分隔符"URL_PATHINFO_DEPR"=>"-",
使用以上配置的話,URL訪問地址可以變成: http://localhost/?path=/home-user-login-var-value
相容模式配合Web伺服器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。
例如,我們在Apache下面的話,.htaccess檔案改成如下內容:
就可以和REWRITE模式一樣訪問下面的URL地址訪問了: http://localhost/home/user/login/var/value