• .htaccess语法中RewriteCond和RewriteRule意义


    今天看了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在同一个键位上的符号)和$都匹配一个位置,这和有点类似。
    ^匹配你要用来查找的字符串的开头
    $匹配结尾。
    比如一个网站如果要求你填写的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
  • 相关阅读:
    IaaS、PaaS、SaaS的简单介绍
    抓包工具F12和Fiddler的使用
    Element的el-cascader组件获取级联选中的label值
    解决C盘爆满的方法
    js-简单的加密解密函数
    使用removeBg去除图片背景
    git手动提交命令
    JS-下拉筛选的实现
    mysql根据json字段内容作为查询条件
    获取访问用户的客户端IP(适用于公网与局域网)
  • 原文地址:https://www.cnblogs.com/psz1992/p/4442139.html
Copyright © 2020-2023  润新知