浅析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 相关文章推荐
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
PHPCMS的使用小结
Sep 20 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php生成随机颜色方法汇总
Dec 03 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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之第三天
2006/10/09 PHP
php获取url参数方法总结
2014/11/13 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
解决pip install psycopg2出错问题
2020/07/09 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
社会实践心得体会
2014/01/03 职场文书
仓库管理制度
2014/01/21 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
买卖协议书范本
2014/04/21 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
公司年夜饭通知
2015/04/25 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
导游词之西安骊山
2019/12/03 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android