WEB开发网
开发学院服务器WEB服务器Apache Apache重写规则的常见应用及实例说明 阅读

Apache重写规则的常见应用及实例说明

 2007-03-10 00:00:00 来源:WEB开发网   
核心提示: rewriteengine onrewritebase /~jephe/rewriterule ^(.*)$ $1 [R=301]这样,对manual目录下任何文件的请求被重定向到~jephe目录下相同文件的请求,Apache重写规则的常见应用及实例说明(4),2.将http://www.use
rewriteengine on
rewritebase /~jephe/
rewriterule ^(.*)$ $1 [R=301]

这样,对manual目录下任何文件的请求被重定向到~jephe目录下相同文件的请求。

2.将http://www.username.domain.com对于username的主页请求转换为对http://www.domain.com/username的请求

对于HTTP/1.1的请求包括一个Host: HTTP头,我们能用下面的规则集重写

http://www.username.domain .com/anypath到/home/username/anypath。
rewriteengine on
rewritecond %{HTTP_HOST} ^www.[^.] .host.com$
rewriterule ^(. ) %{HTTP_HOST}$1 [C]
rewriterule ^www.([^.] ).host.com(.*) /home/$1$2

注: “rewritecond”表明是条件重写规则,当满足后面定义的条件后才会应用下面的重写规则,“rewritecond”有各种变量,请查阅相关文档。

3.防火墙上的重写规则代理内部网段上服务器的请求

NameVirtualhost 1.2.3.4
< Virtualhost 1.2.3.4:80 > servername www.domain.com
rewriteengine on
proxyrequest on
rewriterule ^/(.*)$ http://192.168.1.3/$1 [P,L]
< /Virtualhost >

注: 当外部浏览器请求http://www.domain.com时,将被解析到IP地址1.2.3.4,Apache交由mod_rewrite处理,转换成http://192.168.1.3/$1后再交由代理模块mod_proxy,得到内容后传送回用户的浏览器。

4.基本预先设定的转换Map表进行重写rewritemap

转换http://www.domain.com/{countrycode}/anypath到Map表中规定的URL,前面是虚拟主机中的定义。

rewritelog /usr/local/apache/logs/rewrite.log
rewriteloglevel 9
rewriteengine on
proxyrequest on
rewritemap sitemap txt:/usr/local/apache/conf/rewrite.map
rewriterule ^/([^/] ) /(.*)$ http://%{REMOTE_HOST}::$1 [C]
rewriterule (.*)::([a-z] )$ ${sitemap:$2|http://h.i.j.k/} [R=301,L]

文件/usr/local/apache/conf/rewrite.map的内容如下:

sg http://a.b.c.d/
sh http://e.f.g.h/

注: 当用户请求http://www.domain.com/sg/anypath时被重写为http://a.b.c.d/anypath。当需要调试时请用rewritelog和 rewriteloglevel 9联合,9为最大,即得到最多的调试信息;最小为1,表示得到最少的调试信息;默认为0,表示没有调试信息。

sitemap的语法是${sitemap: LookupKey | Defaultvalue},有些书上把$写成了%是错误的。

上一页  1 2 3 4 

Tags:Apache 重写 规则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接