ThinkPHP的URL模式

ThinkPHP的URL模式有四种,默认是PATHINFO模式,其他三种分别为:普通模式、REWRITE和兼容模式。

一、PATHINFO模式

浏览器输入格式为:

http://localhost/demo39/index.php/模块/控制器/操作

在Home的Controller建立 UserController.calss.php ,如下图所示:

在浏览器上输入 http://localhost/demo39/index.php/Home/User 

得到的结果为: user index 

这时在浏览器中输入上面所说的输入格式,如 http://localhost/demo39/index.php/Home/User/test/user/Lee/pass/123 

则显示为:

 user:Lee
pass:123 

 PATHINFO 模式下默认的分隔符是/,我们可以设置为你想要的,比如:_

这时,在common/conf/config.php下修改

添加

//设置PATHINFO的分割符
'URL_PATHINFO_DEPR'=>'_',

如下图所示:

  

这时,在浏览器上输入 http://localhost/demo39/index.php/Home_User_test_user_Lee_pass_123 

这时要注意,在Home之后就要开始使用_符号,得到的结果如下图所示:

 二、接下来介绍普通模式:

在浏览器上输入  http://localhost/demo39/index.php?m=Home&c=User 

得到 user index 

接下来输入参数   http://localhost/demo39/index.php?m=Home&c=User&a=test&user=Lee&pass=123 

得到结果为:

user:Lee
pass:123

在这条 URL 上,我们发现采用的就是传统的 GET 模式,m 表示模块,c 表示控制器,a表示方法,后面的表示键值对。
普通模式的 m、c、a 可以自行设置为你习惯的键名称:

这时在 common/conf/config.php 中添加:

'VAR_MODULE'=>'mm',
'VAR_CONTROLLER'=>'cc',
'VAR_ACTION'=>'aa',

修改完后,在浏览器中输入变为: http://localhost/demo39/index.php?mm=Home&cc=User&aa=test&user=Lee&pass=123 

结果仍为:

user:Lee
pass:123

另外要说一点的就是,在普通模式下时,demo39后面的index.php可以去掉,结果不会有影响。

3、REWRITE模式(重写模式)

httpd.conf 配置文件中加载了 mod_rewrite.so 模块,

就是在 LoadModule rewrite_module modules/mod_rewrite.so   前面的#号去掉
AllowOverride None 将 None 改为 All,改好这两处后,重启apache,
把下面的内容保存为.htaccess 文件放到应用入口文件的同级目录下
这样,ThinkPHP 自带的.htaccess 文件就起作用了,可以过滤掉 index.php 这个字符串。

4、兼容模式一般用于不支持 PATHINFO 的特殊环境,基本上用不到。

原文地址:https://www.cnblogs.com/jacson/p/4466996.html