浅析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脚本
Nov 26 PHP
PHP的分页功能
Mar 21 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
PHP抽象类 介绍
Jun 13 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
一段实用的php验证码函数
May 19 PHP
php加密解密字符串示例
Oct 13 PHP
万能的php分页类
Jul 06 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
php的扩展写法总结
May 14 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
法院个人总结
2015/03/03 职场文书
大学生暑假实习总结
2015/07/13 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
nginx安装以及配置的详细过程记录
2021/09/15 Servers
Win11开始菜单添加休眠选项
2022/04/19 数码科技
vue使用watch监听属性变化
2022/04/30 Vue.js