浅析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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP自动识别当前使用移动终端
May 21 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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
优化PHP代码的53条建议
2008/03/27 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
分析python切片原理和方法
2017/12/19 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
Java编程面试题
2016/04/04 面试题
优秀企业获奖感言
2014/02/01 职场文书
市政管理求职信范文
2014/05/07 职场文书
加入学生会自荐书
2015/03/05 职场文书
在职证明书模板
2015/06/15 职场文书
创业计划书之家教托管
2019/09/25 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
vue实现列表垂直无缝滚动
2022/04/08 Vue.js