浅析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
让你的网站首页自动选择语言转跳
Dec 06 PHP
PHP 简单日历实现代码
Oct 28 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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同时支持GIF、png、JPEG
2006/10/09 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Django权限机制实现代码详解
2018/02/05 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
非常详细的C#面试题集
2016/07/13 面试题
自我鉴定模板
2013/10/29 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
技能比武方案
2014/05/21 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
2014年教学工作总结
2014/11/13 职场文书
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS