浅析Apache中RewriteCond规则参数的详细介绍Apache重写second语句一直是我的难点。我尝试过很多次去理解,但是没有结构。这一次,我终于知道了它的意义。
就像我们程序中的if语句一样,RewriteCond的意思是如果满足某些条件或条件,就直接在RewriteCond下面执行RewriteRule语句。这是RewriteCond最原始最基本的功能。为了便于理解,我们来看一些例子。复制代码如下:重写经济上的重写引擎% { http _ user _ agent } Mozilla//5/. 0。* index.php index.m.php重写经济% {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.m.php } else跳转访问index.b.php在看例2:
rewrite cond % { http _ referer }(www.test.cn)rewriter rule(。*)以上$ test.php语句的作用是,如果你访问的最后一个页面的主机地址是www.test.cn,那么无论你当前访问的是哪个页面,都会跳转到访问test.php。在看例三:
复制代码代码如下:rewritecond% {remote _ host} host1。*[或]重写第二个% {远程主机}主机2。*[或]重写第二个% {远程主机}主机3。* Rewriterule(。*)$ test.php上述语句的作用是,如果你的地址是host1或host2或host3,就跳转到test.php。从这里可以看出,RewriteCond语句之间的缺省值是和。如果要OR,就要显式写出来。下面是自己收藏的一些有用的重写规则:
重写秒% {请求文件名}!-f //如果文件存在,直接访问该文件,不需要后面的RewriteRule。(重写经济% {请求文件名}!-d //#如果目录存在,直接访问目录,不需要rewriterule rewrite cond % { request _ uri }!* (/.css |/。js |/。gif |/。png |/。jpg |/。jpeg) $/#如果是带这些后缀的文件,直接访问文件,不用重写。