thinkPHP5.0框架URL访问方法详解


Posted in PHP onMarch 18, 2017

本文实例讲述了thinkPHP5.0框架URL访问方法。分享给大家供大家参考,具体如下:

URL设计

ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...]

支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:

>php.exe index.php(或者其它应用入口文件) 模块/控制器/操作/[参数名/参数值...]

可以看到,无论是URL访问还是命令行访问,都采用PATH_INFO访问地址,其中PATH_INFO的分隔符是可以设置的。

注意:5.0取消了URL模式的概念,并且普通模式的URL访问不再支持,如果不支持PATHINFO的服务器可以使用兼容模式访问如下:

http://serverName/index.php(或者其它应用入口文件)?s=/模块/控制器/操作/[参数名/参数值...]

必要的时候,我们可以通过某种方式,省略URL里面的模块和控制器。

URL大小写

默认情况下,URL是不区分大小写的,也就是说 URL里面的模块/控制器/操作名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理。

例如:

http://localhost/index.php/Index/Blog/read
// 和下面的访问是等效的
http://localhost/index.php/index/blog/read

如果访问下面的地址

http://localhost/index.php/Index/BlogTest/read
// 和下面的访问是等效的
http://localhost/index.php/index/blogtest/read

在这种URL不区分大小写情况下,如果要访问驼峰法的控制器类,则需要使用:

http://localhost/index.php/Index/blog_test/read

如果希望URL访问严格区分大小写,可以在应用配置文件中设置:

// 关闭URL中控制器和操作名的自动转换
'url_convert'  => false,

一旦关闭自动转换,URL地址中的控制器名就变成大小写敏感了,例如前面的访问地址就要写成:

http://localhost/index.php/Index/BlogTest/read

但是下面的URL访问依然是有效的:

http://localhost/index.php/Index/blog_test/read

下面的URL访问则无效:

http://localhost/index.php/Index/blogtest/read

需要注意:路由规则中定义的路由地址是按照控制器名的实际名称定义(区分大小写)。

隐藏入口文件

在ThinkPHP5.0中,出于优化的URL访问原则,还支持通过URL重写隐藏入口文件,下面以Apache为例说明隐藏应用入口文件index.php的设置。

下面是Apache的配置过程,可以参考下:

1、httpd.conf配置文件中加载了mod_rewrite.so模块
2、AllowOverride None 将None改为 All
3、在应用入口文件同级目录添加.htaccess文件
,内容如下:

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
快速开发一个PHP扩展图文教程
Dec 12 PHP
php Static关键字实用方法
Jun 04 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php中动态修改ini配置
Oct 14 PHP
dedecms中使用php语句指南
Nov 13 PHP
php cli配置文件问题分析
Oct 15 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
详解php框架Yaf路由重写
Jun 20 PHP
PHP implode()函数用法讲解
Mar 08 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
thinkPHP5.0框架模块设计详解
Mar 18 #PHP
thinkPHP5.0框架命名空间详解
Mar 18 #PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 #PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 #PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 #PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 #PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 #PHP
You might like
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
简单上手Python中装饰器的使用
2015/07/12 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
如何强制垃圾回收
2015/10/06 面试题
银行实习自我鉴定
2013/10/12 职场文书
党风廉设责任书
2014/04/16 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
市场部岗位职责范本
2015/04/15 职场文书
公司表扬稿范文
2015/05/05 职场文书
房屋所有权证明
2015/06/19 职场文书
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技