Think PHP中URL_MODE相关事项

官网上有关于URL_MODE的解释:http://document.thinkphp.cn/manual_3_2.html#url

这里主要讲一下URL_MODE为2,即REWRITE模式。

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

这里可以看到,仅仅设置URL_MODE为2还不够,由于是重写,所以需要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>

这只是添加了重写的规则,具体注释为:

#伪静态和泛域名
#此文件禁止在行内注释
<IfModule mod_rewrite.c>
RewriteEngine on
 #禁止对图片等文件重写:没有这一条,所有的404都会执行index.php脚本,耗费大量资源。
RewriteCond %{REQUEST_URI} !((.*).jpg|.jpeg|.bmp|.gif|.png|.js|.css)$
 #禁止对/public文件夹内重写,作用同上
RewriteCond %{REQUEST_URI} !(^/public/(.*))$
#如果是一个物理存在的目录,禁止重写
RewriteCond %{REQUEST_FILENAME} !-d
#如果是一个物理存在的文件,禁止重写
RewriteCond %{REQUEST_FILENAME} !-f
#上面2条不识别REQUEST_FILENAME时的替代写法
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
#RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
#php api模式,服务器能识别PATH_INFO
#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
#php fastcgi模式 服务器不识别PATH_INFO
RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L]
</IfModule>

在添加规则前要确保web服务器的重写功能已经开启,并确保服务器能读取到.htaccess的配置,否则出现404错误。

apache重写功能开启:

在apache配置文件httpd.conf里面将LoadModule rewrite_module modules/mod_rewrite.so注释取消,这就开启了apache的重写支持。

Allow Override:

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型. 

Allow Override 设置为None的时候,会完全忽略.htaccess,设置为All的时候,会读取所有的.htaccess配置。要保证rewrite正常,则至少要保证为FileInfo:

< Directory /myblogroot/>
    AllowOverride FileInfo
< /Directory> 

以上几点全部做到后,URL_MODE=2才会生效,此时url里面就可以不需要INDEX.PHP了。

时间: 2024-10-12 11:28:30

Think PHP中URL_MODE相关事项的相关文章

关于加本人QQ相关事项的一些说明。

我自己认为在图像编程的某些方面,我是个熟手了,当然在很多方面,我都没有入门.但是这个世界上毕竟菜鸟还有很多,比我菜的也一大把一大把的.我曾经是个热爱帮助别人的人,但现在我已经不是了,因此,我会拒绝很多人的QQ申请,或者通过申请的我也会没说几句就删除掉. 这样,不免会有人认为我自大,确实,天外天外有天,我也有崇拜的偶像.但是我的偶像只放在心里,我是不会通过任何物理的手段去和偶像接触的. 我在这里对加我QQ的一些事项进行说明,QQ申请的验证方式只有那么一点点信息量,是无法表达我的想法的. 第一.我确

2016届毕业生-毕业设计的相关事项

2016届毕业生-毕业设计的相关事项 持续更新,注意通知 通知1:指导开题的通知:(2016-2-15) 2016年2月24日-2016年3月1日,请同学们到学校.届时我在办公室进行就如何开题,进行指导(具体时间,电话联系). 要求1:按时间到学校.集中指导时不能按时出勤的,将按学院相关要求处理. 要求2:认真理解毕业设计课题. 要求3:认真撰写开题报告,准备3分钟答辩和5-7页PPT. 附录1. 开题报告          开题报告作为毕业设计答辩委员会对学生答辩资格审查的依据资料之一,应在指

C语言中随机数相关问题

用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand(unsigned int seed); //为rand设置"种子"的值 srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的.通常的做法是以这样一句代码: srand((unsigned)time(NULL)); 来取

补充:sql server 中的相关查询、case函数

相关查询(在同一个表中) 相关查询类似子查询,但是又不同于子查询:子查询中的子条件可以单独查出数据,但是相关查询的子条件不能查处数据.(可以理解成C#中for的穷举法,第一个for走一个,第二个for走一圈,在相关查询中,括号内的数据只有几个,外面的查询有全部的数据,每个数据到括号中去比较是否合适) 格式: select * from 表名1 as a where a.列名 关系表达式或逻辑运算符 ( select * from 表名1 as b where a.相关列名1 = b.相关列名1

自定义tabBar中的注意事项

1.在自定义tabBar中,往tabBar中添加按钮的时候,默认情况下会在按钮的前面和后面添加UITabBarBackgroundView和UIImageView,导致子控件会增加两个,在自动布局中就会出现排版错误. 解决办法:让自定义的tabBar继承UIView. 2.对于tabBarItem,要想改变对象的某个属性,最好使用KVO来监听属性改变,使用的方法如下: ? 1 2 3 4 5 6 7 8 9 /**  *  监听到某个对象的属行改变了就去调用  *  *  @param keyP

理解CSV文件以及ABAP中的相关操作

在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separator:两个字段之间的界线,在CSV文件中即是“,”. Delimiter:这种符号的开端和结束,代表了某种东西的界限.举个例子“测试字符串”有两个delimiters,即两个双引号.在很多逗号需要成为文本的情况下,这些CSV文件会使用双引号作为Delimiter. Terminator : 代表片段

(笔记)Linux内核中内存相关的操作函数

linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) 内核空间申请指定大小的内存区域,返回内核空间虚拟地址.在函数实现中,如果申请的内存空间较大的话,会从buddy系统申请若干内存页面,如果申请的内存空间大小较小的话,会从slab系统中申请内存空间.有关buddy和slab,请参见<linux内核之内存管理.doc> gfp_t flags 的选项

HTML中CSS相关选择器

1.选择器的分类: 1 h1,h2,h3,h4 { 2 color:red; 3 } 2.派生选择器: 1 li strong{ 2 color:red; 3 } 3.id选择器: 1 1 #red{ 2 color:red; 3 } 4 #green{ 5 color:green; 6 } 8 9 HTML: 10 <p id="red">I am red</p> 11 <p id="green">I am green</

Java中Map相关的快速查找算法与唯一性(转载)

原文地址:http://blog.csdn.net/chuyuqing/article/details/19629229 在对<Set和hashCode()>的一篇原创文章写完后,由于对自己的一些论断产生了模糊和怀疑,因此又对Set进行了一些研究,形成本篇. 在Set的使用场景中,我们不外乎看中了她存储数据的唯一性,即不能存储重复值,这在某些应用场合下是很必要的一个特性.那么从更深一层来考虑,Set究竟如何使数据不重复的呢?从另一个层面来考虑,她又如何确保在验证数据是否重复过程中的快速性呢?假