ThinkPHP(3)——URL模式

原创 2016年05月30日 17:38:11

什么是URL模式?

thinkhp是单入口框架,所有的请求都要通过入口文件,那么如何通过解析访问地址来调用对应的控制器中的方法呢?

我们常见的url可能有多种形式:

  1. http://localhost/index.php?m=index&a=index
  2. http://localhost/index.php/Index/user

显然第二种会比第一种美观一些。因此,thinkphp提供了四种URL模式,能够解析不同形式的url,从而调用相应的控制器中的方法

通过查看配置文件convention.php,我们可以知道thinkphp默认的url模式是PATHINFO模式

这里写图片描述

U方法

假设我们现在在Index控制器中添加了一个user方法,那么在当前url模式下,我们访问这个方法的url是什么样的呢?我们可以通过使用U方法来获取。

这里写图片描述

得到结果:

这里写图片描述

然后我们输入上图所示的地址,就能成功访问Index控制器中的user方法,并且传入参数id=1

U方法具体参数如下:

这里写图片描述

提示:本人在视频和其他资料中看到的U方法参数和上述的U方法参数有些区别,个人猜想应该是由于版本更新,这个方法也做了些改动。

PATHINFO模式

例如:http://localhost/index.php/home/user/login/var/value/

PATHINFO地址的前三个参数分别表示模块/控制器/操作。

不过,PATHINFO模式下面,依然可以采用普通URL模式的参数方式,例如:
http://localhost/index.php/home/user/login?var=value 依然是有效的

普通模式

普通模式也就是传统的GET传参方式来指定当前访问的模块和操作,例如:

http://localhost/?m=home&c=user&a=login&var=value

REWRITE模式

例如:http://localhost/home/user/login/var/value ,仔细看就会发现,该模式下的url中,省去了index.php,看过去更加的顺眼了。

值得一提的是,如果要使用该模式,不仅仅要修改配置文件,还需在入口文件同级目录下添加.htaccess文件,内容如下:

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

还需将apache服务器开启重写模块

打开apache配置文件,搜索rewrite.so,将最前面的#号去掉,然后重启服务。

这里写图片描述

兼容模式

当服务器环境不支持pathinfo模式时,可以使用兼容模式。

例如:http://localhost/?s=/home/user/login/var/value

和REWRITE模式一样,需要有.htaccess文件,内容如下:

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

.htaccess解析

内容 解析
<IfModule mod_rewrite.c> 如果重写模块加载
RewriteEngine on 开启重写引擎
RewriteCond %{REQUEST_FILENAME} !-d 如果请求的资源不是目录,才进行重写
RewriteCond %{REQUEST_FILENAME} !-f 如果请求的资源不是文件,才进行重写
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L] 重写的规则,使用正则(满足该条件才进行重写)
</IfModule> 结束
版权声明:本文为博主原创文章,未经博主允许不得转载。

ThinkPHP的四种URL模式 URL_MODEL

ThinkPHP支持四种URL模式,可以通过设置URL_MODEL参数来定义,包括普通模式、PATHINFO、REWRITE和兼容模式。 1.普通模式:'URL_MODEL'=>0, http://s...

thinkphp5.0学习(四):入口文件、路由模式、路由设置和url生成

一、路由的作用 二、入口文件 三、tp5.0路由学习注意 四、设置路由 五、变量规则 六、路由参数 七、资源路由 八、快捷路由 九、url生成...

ThinkPHP的四种URL模式

普通模式 设置URL_MODEL 为0 采用传统的URL参数模式 http://serverName/appName/?m=module&a=action&id=1 PATHINFO模式 设...

thinkphp3.2 URL模式 用于自学

thinkphp3.2 URL模式    标准URL格式。http://serverName/index.php/模块/控制器/操作   安装后默认的PATHINFO模式 http://serv...

Thinkphp分组模式下URL

分组模式配置如下 'APP_GROUP_LIST' => 'Index,Admin', //项目分组设定 'DEFAULT_GROUP'  => 'Index', //默认分组  然后在...

ThinkPHP控制器URL模式

我们在上面的执行过程里面看到的URL是默认情况下,其实ThinkPHP支持四种URL模式,可以通过设置URL_MODEL参数来定义,包括普通模式、PATHINFO、REWRITE和兼容模式。 一、普...

ThinkPHP 四种URL模式

ThinkPHP框架基于模块和操作的方式进行访问,由于ThinkPHP框架的应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过URL的参数来访问和执行。这样一来,传统方式的文件入口访问会变成...

thinkphp学习笔记6—url模式

thinkphp学习笔记6—url模式 - nd - 博客园  http://www.cnblogs.com/tylerdonet/p/3803197.html thinkphp...
  • guyue35
  • guyue35
  • 2017年02月09日 15:23
  • 267

ThinkPHP的URL访问模式

阿斯顿发放
  • half1
  • half1
  • 2014年03月18日 15:35
  • 721

Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持

打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化。如果你配置了vhost,而且只需要你这一个vhost支持pa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThinkPHP(3)——URL模式
举报原因:
原因补充:

(最多只允许输入30个字)