浅析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 05 PHP
php制作动态随机验证码
Feb 12 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
zend framework重定向方法小结
May 28 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
Highcharts入门之简介
2016/08/02 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
利用Psyco提升Python运行速度
2014/12/24 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
促销活动总结范文
2014/04/30 职场文书
会员活动策划方案
2014/08/19 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
SQL Server实现分页方法介绍
2022/03/16 SQL Server
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python