ThinkPHP(3)——URL模式

什么是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>结束
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值