浅析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连接SQLServer2005 的问题解决方法
Jul 19 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
php实现通用的信用卡验证类
Mar 24 PHP
WIN8.1下搭建PHP5.6环境
Apr 29 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php实现微信发红包
Dec 05 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Python3几个常见问题的处理方法
2019/02/26 Python
python3 深浅copy对比详解
2019/08/12 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
舞蹈兴趣小组活动总结
2014/07/07 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers