浅析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 相关文章推荐
3.从实例开始
Oct 09 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
?算你??的 PHP 程式大小
2006/12/06 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
PHP的PDO连接讲解
2019/01/24 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
详解Python当中的字符串和编码
2015/04/25 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python求解正态分布置信区间教程
2019/11/20 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
专升本自我鉴定
2013/10/10 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
优秀演讲稿范文
2013/12/29 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python