浅析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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
thinkphp常见路径用法分析
Dec 02 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
php根据生日计算年龄的方法
Jul 13 PHP
利用php输出不同的心形图案
Apr 22 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 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
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
详解Python3 pandas.merge用法
2019/09/05 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
毕业生个人的求职信范文
2013/12/03 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
司马光教学反思
2014/02/01 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
天下第一关导游词
2015/02/06 职场文书
单位实习介绍信
2015/05/05 职场文书
领导离职感言
2015/08/03 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS