Apache中RewriteCond规矩参数介绍

    添加时间:2013-6-26 点击量:

    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




                                                                                                                                                                                                                           (转)

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: