系统默认的规范是根据URL里面的模块名、控制器名来定位到具体的控制器类的,从而执行控制器类的操作方法。

以URL访问 http://serverName/index.php/Home/Index/index 为例,其实访问的控制器类文件是:

  1. Application/Home/Controller/IndexController.class.php

如果是Windows环境,无论大小写如何都能定位到IndexController.class.php文件,所以下面的访问都是有效的:

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

如果在Linux环境下面,一旦大小写不一致,就会发生URL里面使用小写模块名不能找到模块类的情况。例如在Linux环境下面,我们访问 http://serverName/index.php/home/index/index 其实请求的控制器文件是

  1. Application/home/Controller/indexController.class.php

因为,我们定义的控制器类是IndexController而不是indexController(参考ThinkPHP的命名规范),由于Linux的文件特性,其实是不存在indexController控制器文件的,就会出现Index控制器不存在的错误,这样的问题会造成用户体验的下降。

但是系统本身提供了一个不区分URL大小写的解决方案,可以通过配置简单实现。

只要在项目配置中,增加:

  1. 'URL_CASE_INSENSITIVE' =>true

配置好后,即使是在Linux环境下面,也可以实现URL访问不再区分大小写了。

  1. http://serverName/index.php/Home/Index/index
  2. // 将等效于
  3. http://serverName/index.php/home/index/index

这里需要注意一个地方,一旦开启了不区分URL大小写后,如果我们要访问类似UserTypeController的控制器,那么正确的URL访问应该是:

  1. // 正确的访问地址
  2. http://serverName/index.php/home/user_type/index
  3. // 错误的访问地址(linux环境下)
  4. http://serverName/index.php/home/usertype/index

利用系统提供的U方法可以为你自动生成相关的URL地址。

如果设置

  1. 'URL_CASE_INSENSITIVE' =>false

的话,URL就又变成: http://serverName/index.php/Home/UserType/add

大理石平台检定规程

注意:URL不区分大小写并不会改变系统的命名规范,并且只有按照系统的命名规范后才能正确的实现URL不区分大小写。

 

thinkphp url大小写的更多相关文章

  1. THINKPHP URL模块大小写导致404问题

    最近我使用THINKPHP开发了一个项目在本地的集成开发环境wampserver做开发时并没有出现问题 上传到linux系统也没有出现问题,但当上传到windows平台上就出现了问题"文件4 ...

  2. thinkphp支持大小写url地址访问,不产生下划线

    from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...

  3. ThinkPHP - URL - 伪静态 - 路由 - 重写

    URL: 一.URL规则 1.默认是区分大小写,可以修改(配置文件)为不区分大小写. 2. //修改URL大小写问题 'URL_CASE_INSENSITIVE' =>true, 如果模块名为 ...

  4. thinkphp url模式

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

  5. 关于URL大小写问题

    关于URL大小写的问题,不同平台的处理不同:Mac OS X 默认的文件系统(HFS case-insensitive) 是不分大小写的,Windows 上的 NTFS 也是,而 Linux 系统常用 ...

  6. thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

    原文:thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成(十五) 本章节:详细介绍thinkphp URL规则.URL伪静态.URL路由.URL重写.URL生成 一.URL ...

  7. apache mod_speling.so 忽略URL大小写(自动纠错)

    apache mod_speling.so 忽略URL大小写(自动纠错) 打开配置文件  httpd.conf 加入 LoadModule speling_module modules/mod_spe ...

  8. ThinkPHP URL 路由简介

    简单的说,URL 路由就是允许你在一定规则下定制你需要的 URL 样子,以达到美化 URL ,提高用户体验,也有益于搜索引擎收录的目的. 例子 原本的 URL 为: http://www.5idev. ...

  9. thinkphp 3.2.1 URL 大小写问题 下面有具体说明

    问题假设方法为/Admin/User/addUser,关闭调试后,再访问时都是全部变成了小写:/admin/user/adduser1.我的APP_DEBUG是关闭的2.程序在win正常,放到linu ...

随机推荐

  1. python接口自动化(响应对象方法)

    python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...

  2. spring_入门配置和注入

    Spring的获取容器: public static void main(String[] args) { //获取核心容器 BeanFactory延迟加载对象 ApplicationContext ...

  3. [转] js对键盘输入事件绑定到特定按钮。

    <script type="text/javascript" language="javascript"> document.onkeyup = f ...

  4. VS2013 蛋疼的“AJAX Control Toolkit”安装过程

    1.AJAX Control Toolkit 下载问题 方法一. 在vs2013中 工具->NuGet程序包管理器->管理解决方案的NuGet程序包 搜索 ajax z找到 AjaxCon ...

  5. java mysql 数据库

    1. jdbc 驱动名还是数据库 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名mydataString url ...

  6. 41. wait notify 方法

    wait()  等待,如果一个线程执行了wait方法,那么该线程就会进去一个以锁对象为标识符的线程池中等待 notity() 唤醒,如果一个线程执行了notity方法,那么就会唤醒以锁对象为标识符的线 ...

  7. Ruby 类和对象

    Ruby 类和对象 Ruby 是一种完美的面向对象编程语言.面向对象编程语言的特性包括: 数据封装 数据抽象 多态性 继承 这些特性将在 面向对象的 Ruby 中进行讨论. 一个面向对象的程序,涉及到 ...

  8. css制作旋转风车(transform 篇)

    做这个案例之前首先要大概了解CSS的transform的属性 transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 看看效果图 打开的时候自动旋转 ...

  9. delphi基础篇之单元文件

    Delphi单元文件 unit MainFrm; {库单元文件头} interface        {接口部分由Interface开始implementation结束.声明引用的单元,常量,数据类型 ...

  10. 基于Netty的RPC架构学习笔记(十一):粘包、分包分析,如何避免socket攻击

    文章目录 问题 消息如何在管道中流转 源码解析 AbstractNioSelector.java AbstractNioWorker.java NioWorker.java DefaultChanne ...