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
Jun 29 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
简单的php新闻发布系统教程
May 09 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
php实现评论回复删除功能
May 23 PHP
PHP实现权限管理功能示例
Sep 22 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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同时支持GIF、png、JPEG
2006/10/09 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
AngularJS内置指令
2015/02/04 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
简谈创建React Component的几种方式
2019/06/15 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python使用filetype精确判断文件类型
2017/07/02 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
python logging通过json文件配置的步骤
2020/04/27 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
求职信模板怎么做
2014/01/26 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
上党课的心得体会
2014/09/02 职场文书
怎样写辞职信
2015/02/27 职场文书
大学生心理健康活动总结
2015/05/08 职场文书