RewriteCond 详解「建议收藏」

RewriteCond 详解「建议收藏」RewriteCond重写规则执行条件语法:RewriteCondTestStringCondPattern生效域:serverconfig,virtualhost,directory,.htaccess特别的上面的TestString,可提供反向引用.引用模式为:%N其中N为(0<=N<=9),引用当前若干Rew…

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

RewriteCond 重写规则执行条件

语法: RewriteCond TestString CondPattern

生效域: server config, virtual host, directory, .htaccess

特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9), 引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多. 反向应用多在RewriteRule里常用.

RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.

第一个:
! (感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)

第二个:
< 就是小于的意思, TestString < CondPattern.

第三个:
> 就是大于于的意思, TestString < CondPattern.

第四个:
= 相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.

第五个:
-d 是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d

第六个:
-f 是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f

第七个:
-s 是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s

第八个:
-l 是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l

第九个:
-x 是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x

第十个:
-F 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。

第十一个:
-U 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.

另外: RewriteCond 指令后面可带 Flag, 现在只要2个可用, 一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思.

RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行.

看下面的一个例子:

#开启服务器重写模式
RewriteEngine on
#来自 www.test.cn 的连接访问本站时都只能访问 test.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
#来自 www.test.com 的连接访问本站时都只能访问 newTest.php 这页.
RewriteCond %{HTTP_REFERER} (www.test.com)
RewriteRule (.*)$ newTest.php
 
更多参考:

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

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

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


相关推荐

  • java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]

    java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]Java面向对象编程和面向过程编程的区别本章节目标:了解面向对象,知道类和对象的区别,会进行类的定义。知识框架:Java面向对象编程和面向过程编程的区别“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想,简称OP。“面向过程”也可称之为“面向记录”编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。所以面向过…

    2022年7月8日
    19
  • pycharm使用小技巧_pycharm学笨办法

    pycharm使用小技巧_pycharm学笨办法一、常用小技巧1.设置代码字体点击左上角的“File”(文件),选择“Settings”(设置),输入“font”(字体)找到“Font”,在“Size”(大小)里面设置数字,默认是13,建议15或者18就可以了。2.设置菜单界面文字大小这里跟上面有些区别,上面是调整代码文字大小,但并没有改变菜单界面的文字大小,如果你的菜单界面文字比较小。那么你就需要去调整一下菜单界面的文字大小了,点击左上角的“File”,选择“Settings”,输入“font”,找到“Appearance”,在“Use

    2022年8月26日
    6
  • 6步教你zencart模板制作

    6步教你zencart模板制作学习zencart模板制作我还是来简单的讲一下关于zencart一般的模板的制作方法:首先必须的条件是要会div+css和html这个(相信对于美工来说这个不是问题);其次要有dw这个网页编辑工具!好了!前提条件说完了,现在来入正题。1,在includes/template下…

    2022年7月27日
    5
  • bzero函数C语言_zeros函数

    bzero函数C语言_zeros函数原型:externvoidbzero(void*s,intn);  用法:#include  功能:置字节字符串s的前n个字节为零且包括‘\0’。  说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。在POSIX.

    2022年10月12日
    5
  • WinHttp应用demo

    WinHttp应用demo#include#include#include#pragmacomment(lib,”winhttp”)structcallback_param_t{HINTERNEThInet;DWORDdwErrCert;};staticVOIDCALLBACKSyncCallback(HINTERNET,DWORD_PTR,DWORD,

    2022年7月11日
    15
  • $.ajax()方法详解学习

    在工作总是会有很多地方用到异步请求,有时候用快捷方法 get/post 或者getJson不能满足自己的需求,所以必须使用底层的ajax来实现异步请求,每次写完下次在用到的时候就记不清楚了,就在这里记录一下,方便自己以后使用和其他人学习! 主要是参考整理JQuery的文档和一些好博客内容!记录一下平常工作最常用的!

    2022年2月25日
    45

发表回复

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

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