回覆列表
  • 1 # 快樂與我同行9

    入口檔案是應用的單一入口,對應用的所有請求都定向到應用入口檔案,系統會從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

  • 中秋節和大豐收的關聯?
  • 資料線插頭壞了小妙招?