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