1. 程式人生 > >ThinkPHP3.2====》url模式的型別

ThinkPHP3.2====》url模式的型別

ThinkPHP的URL是區分大小寫的(主要針對模組名,控制器名,操作名,不包含引數),如果想設定為不區分大小寫,需要新增配置

'URL_CASE_INSENSITIVE'  =>  true,  //為true為不區分大小寫,為預設值

當開啟除錯模式的情況下,這個引數是false,因此你會發現在除錯模式下面URL區分大小寫的情況。

ThinkPHP支援的URL模式有四種:普通模式、PATHINFO、REWRITE和相容模式,可以設定URL_MODEL引數改變URL模式。

URL模式 URL_MODEL設定
普通模式 0
PATHINFO模式(預設模式) 1
REWRITE模式 2
相容模式 3

如果你整個應用下面的模組都是採用統一的URL模式,就可以在應用配置檔案中設定URL模式,如果不同的模組需要設定不同的URL模式,則可以在模組配置檔案中設定。

1、普通模式

普通模式也就是傳統的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只能在應用配置檔案中設定,其他引數可以則也可以在模組配置中設定

2、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

3、REWRITE模式

REWRITE模式是在PATHINFO模式的基礎上添加了重寫規則的支援,可以去掉URL地址裡面的入口檔案index.php,但是需要額外配置WEB伺服器的重寫規則。

如果是Apache則需要在入口檔案的同級新增.htaccess檔案,內容如下:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

接下來,就可以用下面的URL地址訪問了: http://localhost/home/user/login/var/value

更多環境的URL重寫支援參考部署部分的URL重寫。(雖然沒懂啥意思)

4、相容模式

相容模式是用於不支援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檔案改成如下內容:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>

就可以和REWRITE模式一樣訪問下面的URL地址訪問了: http://localhost/home/user/login/var/value