当前位置: 首页 > news >正文

Apache RewriteCond RewriteRule

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。

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


转载于:https://my.oschina.net/workhelu/blog/353664

相关文章:

  • 手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验
  • @font-face 用字体画图标
  • DOM笔记(四):HTML 5 DOM复杂数据类型
  • webpack Cannot find module 'webpack/schemas/WebpackOptions.json'
  • VMware vCenter Converter 组件
  • 鱼鹰软件签约中影集团电影数字制作基地
  • Java对日期Date类进行加减运算,年份加减,月份加减
  • 一时冲动,草率从事,就会身遭不幸。
  • 单例模式设计
  • 如何把python最小化安装在客户机上面
  • WPF实现物理效果 拉一个小球
  • Extjs的textfield的颜色设置和出现的问题笔记
  • nginx快速安装
  • 身份证号 js验证 validform
  • Alamofire动态Proxy,报出FAILURE: Error Domain=NSURLErrorDomain Code=-999 cancelled
  • #Java异常处理
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • 78. Subsets
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Git初体验
  • Git学习与使用心得(1)—— 初始化
  • happypack两次报错的问题
  • Java IO学习笔记一
  • Java,console输出实时的转向GUI textbox
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • log4j2输出到kafka
  • mysql中InnoDB引擎中页的概念
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Promise初体验
  • Xmanager 远程桌面 CentOS 7
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 基于组件的设计工作流与界面抽象
  • 简单实现一个textarea自适应高度
  • 浏览器缓存机制分析
  • 免费小说阅读小程序
  • 前端面试之CSS3新特性
  • 嵌入式文件系统
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 为什么要用IPython/Jupyter?
  • 数据可视化之下发图实践
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (LeetCode C++)盛最多水的容器
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat批处理(一):@echo off
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 2.0中新增的一些TryGet,TryParse等方法