ThinkPHP教程--14--URL模式

【ThinkPHP学习】 Ubuntu apache2 URL重写配置过程 RT. 最近楼主在研究Think 阅读详情

入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作:

  1. http://serverName/index.php/模块/控制器/操作

这是3.2版本的标准URL格式。

可以通过设置模块绑定或者域名部署等方式简化URL地址中的模块及控制器名称。

URL大小写

ThinkPHP框架的URL是区分大小写(主要是针对模块、控制器和操作名,不包括应用参数)的,这一点非常关键,因为ThinkPHP的命名规范是采用驼峰法(首字母大写)的规则,而URL中的模块和控制器都是对应的文件,因此在Linux环境下面必然存在区分大小写的问题。

框架内置了一个配置参数用于解决URL大小写的问题,如下:

  1. 'URL_CASE_INSENSITIVE' => true,

当URL_CASE_INSENSITIVE设置为true的时候表示URL地址不区分大小写,这个也是框架在部署模式下面的默认设置。

当开启调试模式的情况下,这个参数是false,因此你会发现在调试模式下面URL区分大小写的情况。

URL模式

如果我们直接访问入口文件的话,由于URL中没有模块、控制器和操作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的:

  1. http://serverName/index.php
  2. http://serverName/index.php/Home/Index/index

这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和操作的方法不同,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。

URL模式URL_MODEL设置
普通模式0
PATHINFO模式1
REWRITE模式2
兼容模式3

如果你整个应用下面的模块都是采用统一的URL模式,就可以在应用配置文件中设置URL模式,如果不同的模块需要设置不同的URL模式,则可以在模块配置文件中设置。

普通模式

普通模式也就是传统的GET传参方式来指定当前访问的模块和操作,例如: http://localhost/?m=home&c=user&a=login&var=value

m参数表示模块,c参数表示控制器,a参数表示操作(当然这些参数都是可以配置的),后面的表示其他GET参数。

如果默认的变量设置和你的应用变量有冲突的话,你需要重新设置系统配置,例如改成下面的:

  1. 'VAR_MODULE' => 'module', // 默认模块获取变量
  2. 'VAR_CONTROLLER' => 'controller', // 默认控制器获取变量
  3. 'VAR_ACTION' => 'action', // 默认操作获取变量

上面的访问地址则变成: http://localhost/?module=home&controller=user&action=login&var=value

注意,VAR_MODULE只能在应用配置文件中设置,其他参数可以则也可以在模块配置中设置

PATHINFO模式

PATHINFO模式是系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。对应上面的URL模式,PATHINFO模式下面的URL访问地址是: http://localhost/index.php/home/user/login/var/value/

PATHINFO地址的前三个参数分别表示模块/控制器/操作。

不过,PATHINFO模式下面,依然可以采用普通URL模式的参数方式,例如: http://localhost/index.php/home/user/login?var=value 依然是有效的

PATHINFO模式下面,URL是可定制的,例如,通过下面的配置:

  1. // 更改PATHINFO参数分隔符
  2. 'URL_PATHINFO_DEPR'=>'-',

我们还可以支持下面的URL访问: http://localhost/index.php/home-user-login-var-value

REWRITE模式

REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。

如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:

  1. <IfModule mod_rewrite.c>
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
  6. </IfModule>

接下来,就可以用下面的URL地址访问了: http://localhost/home/user/login/var/value

更多环境的URL重写支持参考部署部分的URL重写。

兼容模式

兼容模式是用于不支持PATHINFO的特殊环境,URL地址是: http://localhost/?s=/home/user/login/var/value

可以更改兼容模式变量的名称定义,例如:

  1. 'VAR_PATHINFO' => 'pathinfo'

PATHINFO参数分隔符对兼容模式依然有效,例如:

  1. // 更改PATHINFO参数分隔符
  2. 'URL_PATHINFO_DEPR'=>'-',

使用以上配置的话,URL访问地址可以变成: http://localhost/?s=/home-user-login-var-value

兼容模式配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。

例如,我们在Apache下面的话,.htaccess文件改成如下内容:

  1. <IfModule mod_rewrite.c>
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
  6. </IfModule>

就可以和REWRITE模式一样访问下面的URL地址访问了: http://localhost/home/user/login/var/value

最新李炎恢Thinkphp项目实战 Thinkphp基础教程 thinkphp入门教程(共36课) 01.ThinkPHP--为什么要学习框架[1].avi 02.ThinkPHP--安装与配置[2].avi 03.ThinkPHP--模块化和URL模式[3].avi 04.ThinkPHP--模型初步[上][4].avi 05.ThinkPHP--模型初步[下][5].avi 06.ThinkPHP--SQL查询语句[上][6].avi 07.ThinkPHP--SQL查询语句[下][7].a... 阅读详情

相关推荐

thinkphp的特点

高级模型:可以轻松支持序列化字段、文本字段、只读字段、延迟写入、乐观锁、数据分表等高级特性。1.视图模型:轻松动态地创建数据库视图,多表查询不再烦恼。2.关联模型:让你以出乎意料的简单、灵活的方式完成多表的关联操作3.模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签库的思想,支持标签库扩展。通过驱动还可以支持Smarty、EaseTe...

flower1q84的博客 2311

学习ThinkPHP3.2.2:几种URL访问方式

http://localhost/wish/index.php/Home/Index/index/ http://localhost/wish/index.php?c=Index&a=index 典型的URL访问规则: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]

追 6433

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8543

thinkphp3.2之url模式和后台模块之间的关系

1.ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。 URL模式 URL_MODEL设置 普通模式 0 PATHINFO模式 1 REWRITE模式 2 兼容模式

不忘初心,方得始终 2576

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题

本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。

weixin_27869497的博客 408

php url美化,ThinkPHP3.2路由美化,url简化

在前台的config.php配置文件中:1.首先开启路由'URL_ROUTER_ON'=>true,2.配置路由规则了,使用URL_ROUTE_RULES参数进行配置,格式为数组。'URL_ROUTE_RULES'=>array('news/:year/:month/:day'=>array('News/archive','status=1'),'news/:id'...

weixin_31292909的博客 357

最优化理论与自动驾驶(三):LQR原理、公式及代码演示

LQR 是基于线性系统和二次型代价函数的最优控制方法,在实际工程应用中,我们一般采用离散时间系统的LQR设计,其目标是通过设计反馈控制律,使系统在离散时间步长内稳定运行,最小化某个二次型代价函数。给定一个离散时间系统,其状态和控制输入通过以下方程表示:是时刻k的系统状态,是时刻k的控制输入,是状态转移矩阵,是输入矩阵。系统描述的物理意义:系统状态通过矩阵A演变到下一时刻,同时控制输入通过矩阵B影响系统的状态。

a8598671的博客 4595

获取当前网站二级域名方法

直接上代码: /** * 获取二级域名 如.test.com * * @staticvar type $domain * @return type */ public static function getSecondDomain() { static $domain; if (empty($domain

gayayzy的专栏 8249

双系统引导修复:GRUB消失后恢复Windows与Ubuntu启动菜单

在UEFI引导架构下,操作系统启动依赖于EFI系统分区(ESP)中存储的引导加载程序。当多个系统共存时,引导管理器负责识别并加载不同操作系统的引导文件。然而,Windows更新或系统调整时常会重置UEFI启动顺序,导致GRUB引导菜单消失,直接进入Windows。这一问题的技术价值在于理解UEFI启动流程与多系统引导管理机制,掌握ESP分区结构与引导文件修复方法。常见的应用场景包括双系统安装后的引导修复、系统更新后的启动项丢失以及磁盘分区调整导致的引导故障。本文针对**GRUB引导菜单消失**和**UEFI

weixin_29895109的博客 295

土壤数据库辅助工具SPAW计算土壤导水率

首先点击打开根据之前的1比100土壤数据查表得到各个组分含量其中Field Capacity是田间持水量Matric Bulk Density是基质粒密度。

所有专家都曾始于新手 3443

php 获取域名

【代码】php 获取域名。

weixin_42136237的博客 838

越野换了逐飞的ips200pro的屏幕后代码烧录中报错: “Cannot initialize device connection” 和 “Flashing failed” ...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1152

Thinkphp 6.0的URL 访问模式

ThinkPHP6.0 的 URL 访问模式,解析它的访问方法。

qq_34820433的博客 1919

AutosarMCAL开发——基于EB Wdg驱动

Autosar标准文件中提及的API共有5个,接口名传入参数说明返回参数函数功能ConfigPtr:Wdg配置指针,参数来自于EB生成代码voidWdg初始化ConfigPtr:Wdg配置指针Wdg初始化检查Wdg切换模式,需开启对应配置timeout:设置定时触发器计数(单位ms)void喂狗并重新设定计数值Wdg版本信息本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 2428

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

ThinkPHP框架中简化URL地址

ThinkPHP中简化URL地址1. 概述 在项目中使用ThinkPHP框架,发现使用该框架还能简化URL地址,如: http: //localhost/index.php/Home/Index/search 可以转换为: http: //localhost/search 2.操作环境 操作系统:Ubuntu 14.04.3 LTS 框架:ThinkPHP 3.2.3 Web服务器:Apac

just泽航 4239

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

nginx1.14.0配置支持pathinfo和url重写,运行thinkphp5

nginx1.14.0配置支持pathinfo和url重写,运行thinkphp5 apache是默认支持pathinfo,而nginx本身是不支持pathinfo 何为pathinfo?请看这个条url127.0.0.1/test.php/a/b/c,/a/b/c即为pathinfo 配置pathinfo 经典配置如下: location ~ \.php${ ........

萧小春 1316

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ThinikPHP 前端URL模式

一 U方法 ThinkPHP有强大的URL解析功能,支持多种URL模式,但这也为前端开发带来了困难,如果URL模式改变了,但前端手工编码调用服务端的URL也要相应的改变,否则就有问题了,因此ThinkPHP提供了一个U方法来产生特定模块,特定方法的URL。 U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]'): U('Index/ind...

186

thinkphp5部分版本存在重大url漏洞

thinkphp部分版本存在重大url漏洞 Thinkphp 5.1.0 - 5.1.31 Thinkphp 5.0.5 - 5.0.23 1、现象: 下载thinkphp_5.0.21 直接访问:http://root.com/tp/public/index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0...

猛犸象 839

ThinkPHP学习笔记(二)入口文件的作用、URL控制、模板的简单使用方式

admin.php <?php ini_set("session.save_handler", "files"); //ThinkPHP核心框架文件路径 //第二个意义:防跳墙,防止用户直接访问敏感文件 //做一个页面A,包含一个敏感文件B,用户的访问必须通过A页面才能访问(define方法) define("THINK_PATH", "./ThinkPHP/"); //应用路径(项目路径) d

devilzy2656的专栏 2398

thinkphp底层原理速成:入口文件、路由模式、路由设置和url生成

本文详细介绍了ThinkPHP5.0的路由功能,包括路由的作用、入口文件配置、路由模式(普通、混合、强制)、路由设置方法(动态单个注册、动态批量注册、配置文件批量注册)、变量规则、路由参数、资源路由的声明和自动注册规则,以及快捷路由的声明和控制器使用。此外,还讲解了如何生成URL以及隐藏入口文件的设置。简化URL地址,方便记忆有利于搜索引擎的优化在网站public目录下(项目\public)新建admin.php打开admin.php1234567891011121314151617 实现功能 index.

2501_94114815的博客 359

ThinkPHP 入门

编写:ThinkPHP 文档组 最后更新:20090501 共 40 页 第 2 页 © Copyright 2006~2009 版权所有 http://thinkphp.cn(放在这里,备查,也方便大家) 目录 1 版权信息...................................................................................

Hurry的专栏 6487

thinkphp3.1 php5.2,ThinkPHP3.1.2视频教程(兄弟连新版)

ThinkPHP3.1.2视频教程(兄弟连新版)ThinkPHP简介:ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很...

weixin_39913807的博客 159

ThinkPHP访问某方法的系统流程

本文参考了ThinkPHP3.1.2完全开发手册。 我们已访问网址http://serverName.com/index.php/User/read/id/8为例,分两种情况来解析系统的执行流程。 首先是调试模式下面的主要执行流程: 1、用户访问网站URL地址 2、调用项目的入口文件(这里是index.php) 3、载入系统入口文件ThinkPHP.php 4、判断

half1的专栏 1144

nginx配置 支持thinkphp 的URL_MODEL=1模式

傻瓜原创,转载请表明出处,谢谢!-- 最近一个用thinkphp框架做的项目,在centos+apache下开发完成后,想转移到nginx上搭建测试环境,才发现nginx默认是不支持PATHINFO的,也就是说不支持TP设置URL_MODEL=1的情况,这时候简单的方法,让nginx迅速搭建TP的方法是,设置URL_MODEL=3,即兼容模式。这种情况下,有可能在你的项目中一...

weixin_33711647的博客 311
上一篇: ThinkPHP教程--14--模块化设计
下一篇: ThinkPHP教程--15--CBD模式
路是自己的平凡的世界
博客等级 码龄13年 3粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值