Apache rewrite规则简介

发布时间:2020-01-02编辑:脚本学堂
本文介绍了apache中rewrite规则一些知识,Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言,有需要的朋友参考下。

apache正则表达式

1、Rewrite规则简介:
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言(有关perl语言的相关内容,请参考本站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、apache rewrite重写规则 举例说明:

一个虚拟主机中定义的规则。功能是把client请求的主机前缀不是www.jb200.com和203.81.23.202都跳转到主机前缀为http://www.jb200.com.cn,避免当用户在地址栏写入http://jb200.com.cn时不能以会员方式登录网站。
 

复制代码 代码示例:
NameVirtualHost 192.168.100.8:80
<VirtualHost 192.168.100.8:80>
    ServerAdmin webmaster@jb200.com.cn
    DocumentRoot "/web/webapp"
    ServerName www.jb200.com.cn
ServerName jb200.com.cn
RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.jb200.com.cn [NC] #声明Client请求的主机中前缀不是www.jb200.com.cn,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC] #声明Client请求的主机中前缀不是203.81.23.202,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空,[NC]的意思是忽略大小写
RewriteRule ^/(.*) http://www.jb200.com.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.jb200.com.cn/, [L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。
</VirtualHost>