ThinkPHP 3.2.3(三)架构之URL模式

时间:2023-03-08 19:58:19
一、标准URL格式
http://serverName/index.php/模块/控制器/操作
二、URL大小写
在/ThinkPHP/Conf/convention.php文件里有URL大小写的配置选项,默认false表示URL区分大小写,true则表示不区分大小写。
ThinkPHP 3.2.3(三)架构之URL模式
手册说,开启调试模式的情况下,这个参数是false,但我的项目中该参数依然是true。
三、URL模式
ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以通过设置URL_MODEL参数来改变URL模式。
ThinkPHP 3.2.3(三)架构之URL模式
如果整个应用下面的模块都是采用统一的URL模式,就可以在应用配置文件中设置URL模式;
如果不同的模块需要设置不同的URL模式,则可以在模块配置文件中设置。
例如:在Home/Controller/IndexController.class.php文件里定义一个带参数的方法:
ThinkPHP 3.2.3(三)架构之URL模式
则不同模式的URL写法如下:
URL模式
URL_MODEL
写法
普通模式
(GET传参)
可以在/ThinkPHP/Conf/convention.php文件里设置变量, 默认的变量设置如下:
ThinkPHP 3.2.3(三)架构之URL模式
URL写为:http://localhost/?m=home&c=index&a=getName&name=liulu,
m参数表示模块,c参数表示控制器,a参数表示操作,后面的表示其他GET参数。
如果将变量改为:
ThinkPHP 3.2.3(三)架构之URL模式
则URL写为:http://localhost/ThinkPHP-3.2.3/?module=home&controller=index&action=getName&name=liulu
如果仍用http://localhost/ThinkPHP-3.2.3/?m=home&c=index&a=getName,依然可以访问。。。
PATHINFO模式
(系统默认)
1
http://localhost/ThinkPHP-3.2.3/index.php/home/index/getName/name/liulu/
PATHINFO模式依然可以采用普通URL模式的参数方式:http://localhost/ThinkPHP-3.2.3/index.php/home/index/getName?name=liulu
可以更改/ThinkPHP/Conf/convention.php文件里的URL_PATHINFO_DEPR配置:
// PATHINFO模式下,各参数之间的分割符号
'URL_PATHINFO_DEPR'     =>  '/',   
如果“/”改为“-”,URL写为:localhost/ThinkPHP-3.2.3/index.php/home-index-getName-name-liulu或localhost/ThinkPHP-3.2.3/index.php/home-index-getName?name=liulu
REWRITE模式
2
在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。
如果是Apache则需要添加与入口文件同级的.htaccess文件
ThinkPHP 3.2.3(三)架构之URL模式
URL写为:http://localhost/ThinkPHP-3.2.3/home/index/getName?name=liulu
兼容模式
3
用于不支持PATHINFO的特殊环境。
在/ThinkPHP/Conf/convention.php文件里,兼容模式变量的名称定义默认为s:
// 兼容模式PATHINFO获取变量
// 例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_DEPR
'VAR_PATHINFO'          =>  's',   
URL写为:http://localhost/ThinkPHP-3.2.3/?s=/home/index/getName/name/liulu
配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。
ThinkPHP 3.2.3(三)架构之URL模式
URL写为:http://localhost/ThinkPHP-3.2.3/home/index/getName/name/liulu