浅析Apache中RewriteCond规则参数的详细介绍


Posted in PHP onJune 30, 2013

RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。

RewriteEngine on
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla//5/.0.*
RewriteRule  index.php            index.m.php
RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  index.php            index.L.php 
RewriteRule  index.php            index.b.php

上面语句的作用是当你是用FF浏览器访问index.php这个文件的时候,会自动让你访问到index.m.php这个文件,当你是用一些移动终端访问的 时候,会让你对index.php这个文件的访问实际访问的是index.L.php去,如果你是用其它的浏览器访问的时候,会让你跳到 index.b.php。在说形象一点,上面的语句就等同于程序里面的下面语句(依PHP语句为例):
if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//跳转到对index.m.php的访问
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//跳转到对index.L.php的访问
}
else
//跳转到对index.b.php的访问

在看例2:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上面语句的作用是如果你访问的上一个页面的主机地址是www.test.cn,则无论你当前访问的是哪个页面,都会跳转到对test.php的访问。
在看例三:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php

上面语句的作用是如果你的地址是host1或host2或host3的时候,则就跳到对test.php。从这里可以看出,RewriteCond语句之间默认的是AND,如果想要OR,则要明确的写出来。
下面是自己收藏的一些有用的重写规则:
RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule
RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite
PHP 相关文章推荐
在线竞拍系统的PHP实现框架(二)
Oct 09 PHP
建立动态的WML站点(二)
Oct 09 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
php 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
php实现分页工具类分享
Jan 09 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 #PHP
PHP删除HTMl标签的三种解决方法
Jun 30 #PHP
PHP删除HTMl标签的实现代码
Jun 30 #PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 #PHP
解析link_mysql的php版
Jun 30 #PHP
分享8个最佳的代码片段在线测试网站
Jun 29 #PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 #PHP
You might like
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python实现五子棋程序
2020/04/24 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
python Matplotlib模块的使用
2020/09/16 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
预备党员入党思想汇报
2014/01/04 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
2015国庆节感想
2015/08/04 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python