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请求的主机前缀不是
和203.81.23.202都跳转到主机前缀为,避免当用户在地址栏
写入时不能以会员方式登录网站。
NameVirtualHost 192.168.100.8:80 ServerAdmin webmaster@colorme.com.cn
DocumentRoot "/web/webapp" ServerName
ServerName colorme.com.cn
RewriteEngine on #打开rewirte功能
#声明Client请求的主机中前缀不是,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^ [NC]
#声明Client请求的主机中前缀不是203.81.23.202,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC]
#声明Client请求的主机中前缀不为空,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$
#含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到
#,[L]意味着立即停止重
#写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功
#能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。
RewriteRule ^/(.*) [L]
例二.将输入 folio.test.com 的域名时跳转到profile.test.com
listen 8080
NameVirtualHost 10.122.89.106:8080
ServerAdmin webmaster@colorme.com.cn
DocumentRoot "/usr/local//apache22/data1/"
ServerName profile.test.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^folio.test.com [NC]
RewriteRule ^/(.*) [L]
3.Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向 强制在替代字符串加上
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-24370-1.html
我们希望能有更多的好心人可以帮帮她们
美国得继续付出才行
撞也撞不疼人家