.htaccess文件中RewriteCond详解

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

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

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://www.cnblogs.com/leekenky/p/4330432.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141584.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • WPF教程2013新版「建议收藏」

    视频目录:(一)WPF基础:控件模型、XAML基础、基础控件【.Net培训—第三季WPF教程】001-课程说明【.Net培训—第三季WPF教程】002-VisualStudio下WPF开发环境的基本使用.zip【.Net培训—第三季WPF教程】003-sender是什么.zip【.Net培训—第三季WPF教程】004-复习继承和类型转换.zip【.Net培训—第三季WPF教程】005-集…

    2022年4月9日
    42
  • Ajax获取 Request 对象

    Ajax获取 Request 对象获取Request对象有了上面的基础知识后,我们来看看一些具体的例子。XMLHttpRequest 是Ajax应用程序的核心,而且对很多读者来说可能还比较陌生,我们就从这里开始吧。从 清单1 可以看出,创建和使用这个对象非常简单,不是吗?等一等。还记得几年前的那些讨厌的浏览器战争吗?没有一样东西在不同的浏览器上得到同样的结果。不管您是否相信,这些战争仍然在继续,虽

    2022年5月2日
    44
  • RuntimeException和Exception区别

    RuntimeException和Exception区别1.java将所有的错误封装为一个对象,其根本父类为Throwable,Throwable有两个子类:Error和Exception。2.Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然ThreadDeath错误是一个“正规”的条件,但它也是Error的子类,因为大多数应用程序都不应该试图捕获它。在执行该方…

    2022年7月25日
    5
  • C语言 排序算法_C语言中三大经典的排序算法

    C语言 排序算法_C语言中三大经典的排序算法文章目录前言一、插入排序1.1直接插入排序1.2希尔排序二、使用步骤1.引入库2.读入数据总结前言常见的排序算法如下:一、插入排序1.1直接插入排序基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。实际中我们玩扑克牌时,就用了插入排序的思想:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],a

    2022年10月30日
    0
  • 无法解析的外部符号问题小结

    无法解析的外部符号问题小结问题1:在编写通信相关程序中,引用了一个静态库(该静态库编译没有问题,并被其他项目引用),该库是对SOCKET的一个封装。基本结构如下: 在属性中添加了该库的引用后,编译仍然报错,错误如下:safmq2005.lib(tcpsocket.obj):errorLNK2019:无法解析的外部符号_gethostbyname@4,该符号在函数”publ

    2022年6月28日
    56
  • A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?Q站是什么?「建议收藏」

    A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?Q站是什么?「建议收藏」A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?A站https://www.acfun.cn/AcFun弹幕视频网-认真你就输啦(・ω・)ノ-(゜-゜)つロA站AcFunACG弹幕视频动画漫画游戏新番鬼畜东方初音DOTAMUGENAcFun是国内首家弹幕视频网站,这里有全网独家动漫新番,友好的弹幕氛围,有趣的UP主,好玩有科技..

    2022年8月23日
    7

发表回复

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

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