今天看了301重定向设置的方法,对网站的首页权重有较重要意义。于是看了别人写的.htaccess文件发现一头雾水,于是查了一些资料来进一步理解。

RewriteCond语法

RewriteCond TestString CondPattern [Flags]

其中的TestString是指一个文本格式的条件 这是一个map(键值对)格式的数据类型。

CondPattern是条件参数

Flags标识是是第三个参数,可以用来紧跟下一个条件,这儿用OR表示或者,如果没有[Flags],则用隐含的AND,表示并且。其它的还可以NC等等,表示忽略大小写。

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。

RewriteRule的语法

RewriteRule Pattern Substitution [Flags]
其中的Pattern就是参数,一般为一些文件的扩展名,Substitution是用来替换前面用的,这儿的Flags,常用的R表示 redirect(强制重定向),F表示forbidden(禁止访问),L表示last(最后),通常当你希望停止重写操作而立即重定向时,可用它。

.htaccess中用到的正则

元字符^(和数字6在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。
^匹配你要用来查找的字符串的开头
$匹配结尾。
比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

通过.htaccess来防止网站的图片、压缩文件、或视频等非Html文件被盗链的方法相当简单,通过在该文件中加入几句命令即可保护我们宝贵的带宽。

用户盗链我们的资源会返回403(没有权限)错误

再看个防盗链的例子:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?abc.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css)$ - [F] [NC]表示不区分大小写
“RewriteEngine On”,开启 Rewrite 规则开关;
HTTP_REFERER:表示访问我们服务器的来源站点。
上面的含义是:如果来源站点不为空且来源站点不是(http://www.abc.com或http://abc.com)[网址不区分大小写] 则所有以.gif .jpg .js .css为后缀的文件都不能被访问.当然,对方如果伪造来源这样我们就束手无策了,例如对方伪造我们的站点采集我们的资源,这是另外的事了。 盗链内容自定义
你会经常看到有的网站显示“来自百度空间”或“图片无法显示”等图片,这是防盗链的另一种设置,即返回的是一个自定义图片,配置如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.com/(.*)$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?google.com/(.*)$ [NC]
RewriteRule \.(gif|jpg)$ http://www.abc.com/image.gif [R,L] 禁止访问
RewriteRule ^.* - [F,L]
这里”-”表示没有替换,F表示禁止对URL地址的存取,L表示停止处理接下来的规则
例子:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L]

浏览器为IE和Opera的访客将被禁止访问。

部分参考:http://www.sjyhome.com/htaccess/hotlinking.html

.htaccess语法中RewriteCond和RewriteRule意义的更多相关文章

  1. 全面理解.htaccess语法中RewriteCond和RewriteRule意义

    RewriteCond的语法 RewriteCond TestString CondPattern [Flags]其中的TestString是指一个文本格式的条件,例子中用的是环境变量名HTTP_HO ...

  2. .htaccess语法之RewriteCond与RewriteRule指令格式详细解释

    htaccess语法之RewriteCond与RewriteRule指令格式详细解释 (2012-11-09 18:09:08) 转载▼ 标签:  htaccess it 分类: 网络 上文htacc ...

  3. 在.htaccess文件中写RewriteRule无效的问题的解决

    近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd ...

  4. .htaccess 语法以及应用

    [转] http://blog.sina.com.cn/s/blog_6e8b46e701014drc.html http://blog.sina.com.cn/s/blog_6e8b46e70101 ...

  5. 转--htaccess语法教程 apache服务器伪静态规则教程

    转自:http://blog.csdn.net/qingli518/article/details/9118361 htaccess语法教程apache服务器伪静态规则教程 注:如果你是为了找Disc ...

  6. Apache中 RewriteCond 规则参数介绍

    RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令.条件之后的重写规则仅在当前URI与Pattern匹配并且满足此处的条件 ...

  7. Apache中 RewriteCond 规则参数介绍 转

    摘要: RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令.条件之后的重写规则仅在当前URI与Pattern匹配并且满足此 ...

  8. Apache中RewriteCond规则参数介绍(转)

    CodeIgniter2.0已经出来有20多天了呢~也就是我一直用的php框架(CI).一直都在研究jquery,倒是把CI给忘到一边去了,呵呵~~今天公司事情不是很多,于是开始熟悉一下CI2.0的一 ...

  9. apache 中 RewriteCond 介绍

    一.Yii2 URL美化 修改Apache配置文件之前,需要先在 httpd.conf中搜索一下 rewrite ,查看一下 LoadModule rewrite_module modules/mod ...

随机推荐

  1. JQuery-Ajax后台提交数据与获取数据

    function jqajax(){ var urlName = $("#urlName").val(); var urla = $("#url").val() ...

  2. Python快速建站系列-Part.Two-结构化和布局

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 首先明确我们要建一个什么样的站,作为教程(也算自己使用tornado的一个小总结),自然功能不能太多,但又满足一个普通网站需要的就行了. 目前想 ...

  3. c#与.net的简介

    c语言诞生于上世纪60年代,后来诞生了面向对象的c++,后来出现看更为精简的java,微软之后又出了c#语言.早期的c#语言和java语言类似.经过长足的发展,c#变得越来越完美. 面向对象 简单,安 ...

  4. 20. 星际争霸之php设计模式--适配器模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  5. 【转】ecshop后台语言项执行漏洞详解

    该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门. 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索用户信息 为什么要搜索用户 该漏洞需要能登 ...

  6. 如何做个简单安卓App流程

    有同学做毕业设计,问怎样做个简单安卓App流程,我是做服务端的,也算是经常接触app,想着做app应该很简单吧,不就做个页面,会跳转,有数据不就行了,我解释了半天,人家始终没听懂,算了,我第二天问了下 ...

  7. java list倒序输出及复制list集合

    如原来有一个集合list,list里面是有数据的,现在如果把list中的集合倒序过来,加这代码 Collections.reverse(list);此代码中传入原来的list数据 有这代码后list在 ...

  8. 2015弱校联盟(2) - J. Usoperanto

    J. Usoperanto Time Limit: 8000ms Memory Limit: 256000KB Usoperanto is an artificial spoken language ...

  9. Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  10. CentOS install GCC-4.8.5

    1. 下载源码:http://ftp.gnu.org/gnu/gcc 2. cd gcc-4.8.5 ./contrib/download_prerequisites       //下载资源包 3. ...