对于Web框架的学习,我们最重要的是了解URL路由是怎样运作的,这是框架分层很重要的一个基础。ThinkPHP框架基于模块和操作来进行访问,使用THinkPHP框架创建的网站都是采用单一入口来执行的,也就是说ThinkPHP框架是通过解析URL参数来执行网站的所有模块和操作的。
ThinkPHP支持的四种URL模式分别是:普通模式、PATHINFO、REWRITE和兼容模式。它们都是通过设置URL_MODEL参数来定义的。
设置方法:设置URL_MODEL 为0
例子:
http://serverName/appName/?m=module&a=action&idnumber=0
这种模式是我们熟悉的url参数的模式,对于大多数使用过web开发的人员来说都不陌生。
PATHINFO模式是ThinkPHP默认的模式。
设置方法:设置URL_MODEL 为1
例子:
http://serverName/appName/module/action/idnumber/0/
这种方式有点类似于我们的伪静态写法
或者你也可以这样写
http://serverName/appName/module,action,idnumber,0/
上面的url可以这样解释:第一个参数会被解析成模块名称(如果启用了分组的话,则依次往后递推),第二个参数会被解析成操作,后面的参数是显式传递的,而且必须成对出现,例如:
http://serverName/appName/module/action/y/2014/m/06/d/23/
在PATH_INFO模式下面,框架会把相关参数转换成GET变量,以及并入REQUEST变量,这样也不妨碍URL里面的GET和REQUEST变量获取。
设置方法:设置URL_MODEL 为2
此模式是不需要在URL中写入口文件,并且此模式可以定义.htaccess 文件。其他的和PATHINFO模式功能是一样的,REWRITE模式需要在开启了Apache的URL_REWRITE模块后才能启用
设置方法:设置URL_MODEL 为3
兼容模式是普通模式和PATHINFO模式的结合,
例子:
http://serverName/appName/?s=/module/action/idnumber/0/
根据上方的几种模式,我建议使用PATHINFO模式开发,这种模式符合我们常见的RUL的特点,便于URL的书写,利于于搜索引擎的优化。