服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

Apache中RewriteCond规则参数的详细介绍


发布日期:2019年05月03日
 
Apache中RewriteCond规则参数的详细介绍
Apache中 RewriteCond语句对于我来说一直是个难点多次试图去把它搞明白都没有结构这次我终于算大概知道它的意思了

RewriteCond就像我们程序中的if语句一样表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句这就是RewriteCond最原始基础的功能为了方便理解下面来看看几个例子

复制代码 代码如下:
RewriteEngine on
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla///*
RewriteRule  indexphp            indexmphp
RewriteCond  %{HTTP_USER_AGENT}  ^Lynx*
RewriteRule  indexphp            indexLphp
RewriteRule  indexphp            indexbphp


上 面语句的作用是当你是用FF浏览器访问indexphp这个文件的时候会自动让你访问到indexmphp这个文件当你是用一些移动终端访问的  时候会让你对indexphp这个文件的访问实际访问的是indexLphp去如果你是用其它的浏览器访问的时候会让你跳到  indexbphp在说形象一点上面的语句就等同于程序里面的下面语句(依PHP语句为例):

复制代码 代码如下:
if($_SERVER[HTTP_USER_AGENT] == Mozilla/)
{
//跳转到对indexmphp的访问
}
else if($_SERVER[HTTP_USER_AGENT] == Lynx)
{
//跳转到对indexLphp的访问
}
else
//跳转到对indexbphp的访问


在看例
RewriteCond %{HTTP_REFERER} (wwwtestcn)
RewriteRule (*)$ testphp
上面语句的作用是如果你访问的上一个页面的主机地址是wwwtestcn则无论你当前访问的是哪个页面都会跳转到对testphp的访问
在看例三

复制代码 代码如下:
RewriteCond %{REMOTE_HOST} ^host* [OR]
RewriteCond %{REMOTE_HOST} ^host* [OR]
RewriteCond %{REMOTE_HOST} ^host*
RewriteRule (*)$ testphp


上面语句的作用是如果你的地址是host或host或host的时候则就跳到对testphp从这里可以看出RewriteCond语句之间默认的是AND如果想要OR则要明确的写出来
下面是自己收藏的一些有用的重写规则
RewriteCond %{REQUEST_FILENAME} !f   //如果文件存在就直接访问文件不进行下面的RewriteRule(不是文件或文件不存在就执行重写)
RewriteCond %{REQUEST_FILENAME} !d   //#如果目录存在就直接访问目录不进行RewriteRule
RewriteCond %{REQUEST_URI} !^*(/css|/js|/gif|/png|/jpg|/jpeg)$ //#如果是这些后缀的文件就直接访问文件不进行Rewrite

               

上一篇:如何把本地MySql数据库移植到远程服务器上

下一篇:浅析HTTP消息头网页缓存控制以及header常用指令介绍