.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)
上一篇 2022年5月25日 下午3:20
下一篇 2022年5月25日 下午3:20


相关推荐

  • matlab中wavedec2,[ZZ] matlab中小波变换函数dwt2和wavedec2 系数提取函数appcoef2和detcoef2…

    matlab中wavedec2,[ZZ] matlab中小波变换函数dwt2和wavedec2 系数提取函数appcoef2和detcoef2…https://zhidao.baidu.com/question/88038464.htmlDWT2是二维单尺度小波变换,其可以通过指定小波或者分解滤波器进行二维单尺度小波分解。而WAVEDEC2是二维多尺度小波分解。DWT2的一种语法格式是[cA,cH,cV,cD]=dwt2(X,‘wname‘);而对应的WAVEDEC2的语法格式是[C,S]=wavedec2(X,N,‘wname‘),其中…

    2022年7月23日
    11
  • win10下python跑科大讯飞语音唤醒

    win10下python跑科大讯飞语音唤醒

    2026年3月14日
    1
  • 任务调度器有哪些_本地计算机上的task scheduler

    任务调度器有哪些_本地计算机上的task schedulerTaskScheduler可以看做任务调度的客户端,负责任务的提交,并且请求集群管理器对任务调度。TaskScheduler的类UML图如下,针对不同部署方式会有不同的TaskScheduler与SchedulerBackend进行组合。TaskScheduler类负责任务调度资源的分配,SchedulerBackend负责与Driver、Executor通信收集Executor上分配给该应用的资…

    2022年10月11日
    6
  • android开发之android:process属性_application中onCreate执行多次「建议收藏」

    应用做的匆忙,很多地方只顾实现功能,没有兼顾好性能,所以停下来重构代码优化性能,结果在打log看启动时间的时候,发现Application的onCreate执行了多次,这样导致重复初始化资源,初始化了3次导致接近1s时间。发现这个是由独立进程引起的。即:process这个属性。android:process        服务所在进程的名字。通常,一个应用的所有组件都运行在系统为这个应用所创建的默

    2022年3月11日
    46
  • 大数据平台数据脱敏介绍

    大数据平台数据脱敏介绍数据脱敏(DataMasking),又称数据漂白、数据去隐私化或数据变形。百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样,就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。可以看到数据脱敏具有几个关键点:敏感数据、脱敏规则、使用环境。敏感数据,又称隐私数据,常见的敏感数据有:姓名、身

    2022年6月21日
    25
  • 关于String转jsonArray,jsonArray转json,json写入实体类

    关于String转jsonArray,jsonArray转json,json写入实体类工作要写个接收数据的接口,基于springMVC的,不了解,补充学习下json的用法1用的是这个jar包,虽然用的时候要导6个包,但用起来很方便。importnet.sf.json.JSONObject;2单个的jsonResult实体类对应json的字段Stringstr="{\"result\":\"success\",\"message\":\"成功!\"}…

    2022年6月20日
    51

发表回复

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

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