URL訪問

URL設(shè)計

ThinkPHP5.0在沒有啟用路由的情況下典型的URL訪問規(guī)則是:

http://serverName/index.php(或者其它應(yīng)用入口文件)/模塊/控制器/操作/[參數(shù)名/參數(shù)值...]

支持切換到命令行訪問,如果切換到命令行模式下面的訪問規(guī)則是:

>php.exe index.php(或者其它應(yīng)用入口文件) 模塊/控制器/操作/[參數(shù)名/參數(shù)值...]

可以看到,無論是URL訪問還是命令行訪問,都采用PATH_INFO訪問地址,其中PATH_INFO的分隔符是可以設(shè)置的。

注意:5.0取消了URL模式的概念,并且普通模式的URL訪問不再支持,但參數(shù)可以支持普通方式傳值,例如:

>php.exe index.php(或者其它應(yīng)用入口文件) 模塊/控制器/操作?參數(shù)名=參數(shù)值&...

如果不支持PATHINFO的服務(wù)器可以使用兼容模式訪問如下:

http://serverName/index.php(或者其它應(yīng)用入口文件)?s=/模塊/控制器/操作/[參數(shù)名/參數(shù)值...]

必要的時候,我們可以通過某種方式,省略URL里面的模塊和控制器。

URL大小寫

默認情況下,URL是不區(qū)分大小寫的,也就是說 URL里面的模塊/控制器/操作名會自動轉(zhuǎn)換為小寫,控制器在最后調(diào)用的時候會轉(zhuǎn)換為駝峰法處理。

例如:

http://localhost/index.php/Index/Blog/read
// 和下面的訪問是等效的
http://localhost/index.php/index/blog/read

如果訪問下面的地址

http://localhost/index.php/Index/BlogTest/read
// 和下面的訪問是等效的
http://localhost/index.php/index/blogtest/read

在這種URL不區(qū)分大小寫情況下,如果要訪問駝峰法的控制器類,則需要使用:

http://localhost/index.php/Index/blog_test/read

模塊名和操作名會直接轉(zhuǎn)換為小寫處理。

如果希望URL訪問嚴(yán)格區(qū)分大小寫,可以在應(yīng)用配置文件中設(shè)置:

// 關(guān)閉URL中控制器和操作名的自動轉(zhuǎn)換
'url_convert'    =>  false,

一旦關(guān)閉自動轉(zhuǎn)換,URL地址中的控制器名就變成大小寫敏感了,例如前面的訪問地址就要寫成:

http://localhost/index.php/Index/BlogTest/read

但是下面的URL訪問依然是有效的:

http://localhost/index.php/Index/blog_test/read

下面的URL訪問則無效:

http://localhost/index.php/Index/blogtest/read

需要注意:路由規(guī)則中定義的路由地址是按照控制器名的實際名稱定義(區(qū)分大小寫)。

隱藏入口文件

在ThinkPHP5.0中,出于優(yōu)化的URL訪問原則,還支持通過URL重寫隱藏入口文件,下面以Apache為例說明隱藏應(yīng)用入口文件index.php的設(shè)置。

下面是Apache的配置過程,可以參考下:
1、httpd.conf配置文件中加載了mod_rewrite.so模塊
2、AllowOverride None 將None改為 All
3、在應(yīng)用入口文件同級目錄添加.htaccess文件,內(nèi)容如下:

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

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

更多其它環(huán)境的隱藏入口文件參考后面的 URL重寫

文檔最后更新時間:2018-04-25 17:39:27

文檔
目錄

深色
模式

切換
寬度