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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
php 文章采集正则代码
Dec 28 PHP
php ajax 静态分页过程形式
Sep 02 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
Python获取网页上图片下载地址的方法
2015/03/11 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
What is view? why do we have view?
2012/06/22 面试题
儿科护士自我鉴定
2013/10/14 职场文书
《月迹》教学反思
2014/02/19 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
php访问对象中的成员的实例方法
2021/11/17 PHP
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers