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脚本的10个技巧(7)
Oct 09 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python列表的增删改查实例代码
2018/01/30 Python
详解Python如何生成词云的方法
2018/06/01 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
个人自我鉴定范文
2013/10/04 职场文书
销售类求职信
2014/06/13 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
学校捐书倡议书
2015/04/27 职场文书
青春雷锋观后感
2015/06/10 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python