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函数解决SQL injection
Dec 09 PHP
据说是雅虎的一份PHP面试题附答案
Jan 07 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php生成圆角图片的方法
Apr 07 PHP
php实现源代码加密的方法
Jul 11 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python import自定义模块方法
2015/02/12 Python
python调用API实现智能回复机器人
2018/04/10 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
机械电子工程专业推荐信范文
2013/11/20 职场文书
大门门卫岗位职责
2013/11/30 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
2014年收银工作总结
2014/11/13 职场文书
python如何将mat文件转为png
2022/07/15 Python