Apache重写规则的常见应用及实例说明
2007-03-10 00:00:00 来源:WEB开发网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},有些书上把$写成了%是错误的。
- ››apache设置域名绑定 以及绑定不起作用的排查
- ››apache rewrite将指定URL转向指定的几个服务器
- ››apache配置文件httpd.comf部分参数说明
- ››Apache+Mysql+PHP+phpMyAdmin+Mac OS X 10.7 Lion...
- ››apache+tomcat负载均衡_项目实例
- ››apache mysql php 源码编译使用
- ››Apache添加mod_aspdotnet.so支持ASP.NET配置指南
- ››Apache中改变php.ini的路径
- ››Apache2.2与Tomcat6整合及虚拟主机配置
- ››Apache+php+mysql在windows下的安装与配置图解
- ››Apache+Subversion完美结合,CentOS下实现版本控制...
- ››Apache HTTPServer2.2.16 发布
更多精彩
赞助商链接