Apache规则RewriteCond详解

Apache规则RewriteCond详解
Apache中RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。 RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。
  RewriteEngineon
  RewriteCond %{HTTP_USER_AGENT

大家好,又见面了,我是你们的朋友全栈君。

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://javaforall.net/131318.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月12日 下午3:46
下一篇 2022年6月12日 下午3:46


相关推荐

  • SPI协议代码

    SPI协议代码软件模拟SPI程序代码概述:   通过两个MCU(STM32F103)来模拟SPI的主从机,完成主机发送从机接收,便于理解SPI协议。SPI协议简介●SPI接口介绍  SCK:时钟信号,由主设备产生,所以主设备SCK信号为输出模式,从设备的SCK信号为输入模式。  CS:使能信号,由主设备控制从设备,,所以主设备CS信号为输出模式,从设备的CS信号为输入模式。  MOSI:主设备数据输出,从设备数据输入,所以主设备MOSI信号为输出模式,从设备的MOSI信号为输入模式。  MISO:主设备数

    2022年10月16日
    4
  • devtools安装_检测devtools

    devtools安装_检测devtoolsvue-devtools是一款基于chrome浏览器的插件,用于调试vue应用。安装:chrome商店直接安装。手动安装步骤:找到vue-devtools的github项目,并将其clone到本地:gitclonehttps://github.com/vuejs/vue-devtools.git安装项目所需要的npm包:npminstall编译项目文件:npmrunbuild添加至chrome浏览器:地址(“chrome://extensions/”)进入扩展程序页面,点击“加载

    2026年4月15日
    5
  • IP地址和子网掩码的关系, 如何计算网络地址?

    IP地址和子网掩码的关系, 如何计算网络地址?一 IP 地址电脑之间要实现网络通信 就必须要有一个合法的 ip 地址 IP 地址 网络地址 主机地址 又称 主机号和网络号组成 ip 地址的结构使我们可以在 Internet 上很方便的寻址 ip 地址通常用更直观的 以圆点分隔号的四个十进制数字表示 每个数字从 0 到 255 如某一台主机的 ip 地址为 128 20 4 1 在局域网里 同样也需要 ip 地址 一般内网的 ip 地址是以 192 168 开头的 这样

    2026年3月26日
    2
  • MFC进度条编程「建议收藏」

    MFC进度条编程「建议收藏」1.进度条的主要功能进度条控制(ProgressControl)主要用来进行数据读写、文件拷贝和磁盘格式等操作时的工作进度提示情况,如安装程序等,伴随工作进度的进展,进度条的矩形区域从左到右利用当前活动窗口标题条的颜色来不断填充。进度条控制在MFC类库中的封装类为CProgressCtrl,通常仅作为输出类控制,所以其操作主要是设置进度条的范围和当前位置,并不断地更新当前位置。进度条的范

    2022年7月12日
    27
  • ubuntu 安装教程(2016年qq版本v6.3.6)

    1、ctri+alt+t打开控制台2、输入:sudoadd-apt-repositoryppa:ubuntu-wine/ppa这是添加wine的库,照提示按回车添加稍等一下3、更新新软件中心输入:sudoapt-getupdate等待更新完毕后输入:sudoapt-getinstallwine1.7

    2022年4月17日
    39
  • 基于深度学习的超分辨率重建

    超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。SR可分为两类:从多张低分辨率图像重建出高分辨率图像和从单张低分辨率图像重建出高分辨率图像。基于深度学习的SR,主要是基于单张低分辨率的重建方法,即SingleImageSuper-Resolution(SISR)。SISR是一个逆问…

    2022年4月11日
    87

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号