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 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
?算你??的 PHP 程式大小
Dec 06 PHP
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
PHP中文编码小技巧
Dec 25 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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程序时遇到的三个问题
2012/01/17 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
python利用datetime模块计算时间差
2015/08/04 Python
python实现图片处理和特征提取详解
2017/11/13 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python提取log文件内容并画出图表
2019/07/08 Python
python实现PID算法及测试的例子
2019/08/08 Python
Python如何安装第三方模块
2020/05/28 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
网络工程师专家职业发展路线
2014/02/14 职场文书
财务总监岗位职责
2014/03/07 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python