1、Rewrite 规则简介:
Rewirte 主要的功能就是实现 URL 的跳转,它的正则表达式是基于 Perl 语言。
可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到
rewrite 模块,必须先安装或加载 rewrite 模块。方法有两种一种是编译 apache
的时候就直接安装 rewrite 模块,别一种是编译 apache 时以 DSO 模式安装
apache,然后再利用源码和 apxs 来安装 rewrite 模块。
基于服务器级的(httpd.conf)有两种方法,一种是在 httpd.conf 的全局下直接利
用 RewriteEngine on 来打开 rewrite 功能;另一种是在局部里利用
RewriteEngine on 来打开 rewrite 功能,下面将会举例说明,需要注意的是,必须
在每个 virtualhost 里用 RewriteEngine on 来打开 rewrite 功能。否则 virtualhost
里没有 RewriteEngine on 它里面的规则也不会生效。
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的 FollowSymLinks
属性且在.htaccess 里要声明 RewriteEngine on。
2、举例说明:
例一.下面是在一个虚拟主机里定义的规则。功能是把 client 请求的主机前缀不
是 www.kiya.cn 和 70.40.213.183 都跳转到主机前缀为 http://www.kiya.cn,避
免相同内容的网页有多个指向的域名,如 http://kiya.cn。
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn
RewriteEngine on #打开 rewirte 功能
RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC] #声明 Client 请求
的主机中前缀不是 www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明 Client 请
求的主机中前缀不是 70.40.213.183,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明 Client 请求的主机中前缀不
为空
RewriteRule ^(.*) http://www.kiya.cn/ [L] #含义是如果 Client 请求的主
机中的前缀符合上述条件,则直接进行跳转到 http://www.kiya.cn/,