.htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符

1、利用 .htaccess 防止盗链

如果不喜欢别人在他们的网页上链接自己的图片、文档的话,也可以通过htaccess的指令来做到。当然这样也可以对你的网站服务器压力变小!

这次先给出‘代码’,然后进行详细的讲解!这个东西纠结了我很久啊,既然自己懂一些,就拿出来和大家一起分享一下,可能有些地方理解错误了,希望发现不对的‘童鞋’能指出,共同进步!

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://localhost/.*$ [OR,NC]
RewriteCond %{HTTP_REFERER} !^http://网站的域名/.*$ [OR,NC]
#当然这里你还可以加很多 RewriteCond
RewriteRule .*\.(gif|GIF|jpg|JPG)$ http://mysite/images/bad.gif [L,R]

先简单介绍一下这个的功能:直接输入图片url、本地localhost、以‘http://网站域名/’ 开头,后面接任何字符任意多个,链接到当前页面的前一页面的url,将不执行 RewriteRule 重写规则。

说起来比较拗口,给个实际的例子吧!

RewriteCond %{HTTP_REFERER} !.*thobian.info/.* [NC]
RewriteRule  .*\.(gif|jpg|png)$ http://thobianinfo/images/logo.jpg [L]

解释:%{HTTP_REFERER}=$_SERVER['HTTP_REFERER'] 读取到的值,如果%{HTTP_REFERER}中不包括 thobian.info/ 、并且%{HTTP_REFERER}是以:.gif或者.jpg或者.png结束,就跳转到http://thobianinfo/images/logo.jpg 这个地址。

2、RewriteCond、RewriteRule规则详细解释

Rewrite规则表达式的说明:(先要清楚rewritecond和rewriterule 是rewrite模块里面的)

. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志
反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N >= 9)

RewriteCond标志符

'nocase|NC'(no case)忽略大小
'ornext|OR' (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符

'redirect|R [=code]' (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
'forbidden|F' (force URL to be forbidden)重写为禁止访问
'proxy|P' (force proxy)重写为通过代理访问的http路径
'last|L' (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
'next|N' (next round)循环同一个规则,直到不能满足匹配
'chain|C' (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
'type|T=MIME-type' (force MIME type)指定MIME类型
'nosubreq|NS' (used only if no internal sub-request)如果是内部子请求则跳过
'nocase|NC' (no case)忽略大小
'qsappend|QSA' (query string append)附加查询字符串
'noescape|NE' (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
'passthrough|PT' (pass through to next handler)将重写结果运用于mod_alias
'skip|S=num' (skip next rule(s))跳过下面几个规则
'env|E=VAR:VAL' (set environment variable)添加环境变量

后续将推出 rewritecond 和rewriterule 编写规则!


转载于:https://my.oschina.net/yonghan/blog/525150

完成对某一种常用高级语言(如Pascal、C语言、PL/0语言)的各类单词进行词法分析。 PL/0语言文法的EBNF描述: 〈程序〉∷= 〈分程序〉。 〈分程序〉∷= [〈常量说明部分〉][〈变量说明部分〉][〈过程说明部分〉]〈语句〉 〈常量说明部分〉∷= CONST〈常量定义〉{。〈常量定义〉}; 〈常量定义〉∷= 〈标志符〉=〈无符号整数〉 〈无符号整数〉∷= 〈数字〉{〈数字〉} 〈变量说明部分〉∷= VAR〈标志符〉{,〈标志符〉}; 〈标志符〉∷= 〈字母〉{〈字母〉|〈数字〉} 〈过程说明部分〉∷= 〈过程首部〉〈分程序〉{;〈过程说明部分〉}; 〈过程首部〉∷= PROCEDURE〈标志符〉; 〈语句〉∷= 〈赋值语句〉|〈条件语句〉|〈当型循环语句〉|〈过程调用语句〉|〈读语句〉|〈写语句〉|〈复合语句〉|〈空〉 〈赋值语句〉∷= 〈标志符〉:=〈表达式〉 〈复合语句〉∷= BEGIN〈语句〉{;〈语句〉}END 〈条件〉∷= 〈表达式〉〈关系运算符〉〈表达式〉|ODD〈表达式〉 〈表达式〉∷= [+|-]〈项〉{〈加法运算符〉〈项〉} 〈项〉∷= 〈因子〉{〈乘法运算符〉〈因子〉} 〈因子〉∷= 〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’ 〈加法运算符〉∷= +|- 〈乘法运算符〉∷= *|/ 〈关系运算符〉∷= =|#|<|>|<=|>= 〈条件语句〉∷= IF〈条件〉THEN〈语句〉 〈过程调用语句〉∷= CALL〈标志符〉 〈当型循环语句〉∷= WHILE〈条件〉DO〈语句〉 〈读语句〉∷= READ‘(’〈标志符〉{,〈标志符〉}‘)’ 〈写语句〉∷= WRITE‘(’〈表达式〉{,〈表达式〉}‘)’ 〈字母〉∷= a|b|…..|X|Y|Z 〈数字〉∷= 0|1|2|…..|8|9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值