全面理解.htaccess语法中RewriteCond和RewriteRule意义

发表时间:2012-06-30 9:34 | 分类:其他知识 | 浏览:3,360 次

关于.htaccess伪静态的使用,章郎虫一直没有好好想过。以前一直是在网上找现成的,然后修改下网址实现重定向。今天我专门找资料看了下RewriteCond和RewriteRule的意思及使用方法。然后回过头看《网站地址更改之htaccess和php的301重定向》这篇文章,终于有些理解。现在不用一直找现成的代码,也可以自己写一些规则实现重定向了。下面就简单的介绍下他们的用法。

RewriteCond的语法

RewriteCond TestString CondPattern [Flags]
其中的TestString是指一个文本格式的条件,例子中用的是环境变量名HTTP_HOST所包含的内容(Name= Value),这是一个map(键值对)格式的数据类型。
CondPattern是条件参数,这儿以第一个例子为例,就是abc.com。
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在同一个键位上的符号)和$都匹配一个位置,这和\b有点类似。
^匹配你要用来查找的字符串的开头
$匹配结尾。
比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

如果你对正则表达式不是很明白,可以看下正则表达式的教程

本文标签:, , ,

本文链接:http://www.sijitao.net/897.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

现在只有1个回复
Comment (1)
Trackbacks (0)
  1. 上海做网站  ( 2012.07.5 09:37 ) : #-9

    谢谢分享,很有帮助

  1. 还没有Trackbacks
博客历程 留言本 文章归档 网站地图 谷歌地图 浙ICP备13025236号-1
托管于阿里云&七牛云 已加入博客联盟 浙公网安备 33021202000610号
Copyright © 2010-2017 虫虫开源 All Rights Reserved.