Apache的ReWrite的应用mod_rewrite模块使用(5)
来源:asp之家 发布时间:2010-04-04 18:44:00
标签:apache,mod_rewrite,url,rewrite,虚拟主机,服务器
为外来访问者重定向宿主目录
说明:
对不是来自本地域ourdomain.com的外来访问者的请求,重定向其宿主目录URL到另一个网站服务器www.somewhere.com,有时这种做法也会用在虚拟主机的上下文中。
方案:
只须一个重写条件:
代码:
RewriteEngine on
RewriteCond % !^.+.ourdomain.com$
RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L]
重定向失败的URL到其他网站服务器
说明:
如何重写URL以重定向对网站服务器A的失败请求到服务器B,是一个常见的问题。一般,可以用Perl写的CGI脚本通过ErrorDocument来解决,此外,还有mod_rewrite方案。但是须注意,这种方法的执行效率不如用ErrorDocument的CGI脚本!
方案:
第一种方案,有最好的性能而灵活性欠佳,出错概率小所以安全:
代码:
RewriteEngine on
RewriteCond /your/docroot/% !-f
RewriteRule ^(.+) http://webserverB.dom/$1
但是其问题在于,它只对位于DocumentRoot中的页面有效。虽然可以增加更多的条件(比如同时还处理宿主目录,等等),但是还有一个更好的方法:
代码:
RewriteEngine on
RewriteCond % !-U
RewriteRule ^(.+) http://webserverB.dom/$1
这种方法使用了mod_rewrite提供的“向前参照(look-ahead)”的功能,是一种对所有URL类型都有效而且安全的方法。但是,对网站服务器的性能会有影响,所以如果网站服务器有一个强大的CPU,那就用这个方法。而在慢速机器上,可以用第一种方法,或者用性能更好的ErrorDocument CGI脚本。
扩展的重定向
说明:
有时候,我们会需要更多的对重定向URL的(有关字符转义机制方面的)控制。通常,Apache内核中的URL转义函数uri_escape()同时还会对anchor转义,即,类似"url#anchor"的URL,因此,你不能用mod_rewrite对此类URL直接重定向。那么如何实现呢?
方案:
必须用NPH-CGI脚本使它自己重定向,因为对NPH(non-parseable headers [无须解析的HTTP头])不会发生转义操作。首先,在针对服务器的配置中(应该位于所有重写规则的最后),引入一种新的URL类型xredirect::
代码:
RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1
[T=application/x-httpd-cgi,L]
以强制所有带xredirect:前缀的URL被传送到如下的nph-xredirect.cgi程序:
代码:
#!/path/to/perl
##
## nph-xredirect.cgi -- NPH/CGI script for extended redirects
## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##
$| = 1;
$url = $ENV;
print "HTTP/1.0 302 Moved Temporarilyn";
print "Server: $ENVn";
print "Location: $urln";
print "Content-type: text/htmln";
print "n";
print "n";
print "n";
print "n";
print "n";
print "n";
print "
Moved Temporarily (EXTENDED)
n";
print "The document has moved here.
n";
print "n";
print "n";
##EOF##
这是一种可以重定向所有URL类型的方法,包括不被mod_rewrite直接支持的类型。所以,还可以这样重定向news:newsgroup:
代码:
RewriteRule ^anyurl xredirect:news:newsgroup
注意:无须对上述规则加[R]或[R,L],因为xredirect:会在稍后被其特殊的传送规则扩展。


猜你喜欢
- 呵呵,很高兴asp之家的Google PR实现了0的突破:最新查询PR值为1虽然只有1,但是毕竟有进步,加油!最新更新:2008年7月26日
- 本文简单介绍Ubuntu系统下SVN的搭建过程更新源sudo apt-get update安装SVNsudo apt-get install
- 一个配置好的MAIL服务器除基本功能外应该具有的其它功能:* 反垃圾邮件能力。检查连接或内容,阻挡某些认为是不良的连接以及信件。* 反病毒能
- 如果说中国的SEOer是“掘金者”,那么搜索引擎就是“金子”,从SEO在国内的兴起也有好几年年的时间,至今能在搜索引擎挖到“金”的SEOer
- 1:查看环境: [root@localhost ~]# cat /etc/redhat-release2:关掉防火墙#重启后生效开启[roo
- 在计算机网络日益普及的今天,计算机安全不但要求防治计算机病毒,而且要提高系统抵抗黑客非法入侵的能力,还要提高对远程数据传输的保密性,避免在传
- 由中国互联网协会、中国投资网联合主办的2009WEBGAME与SNS社区运营大会于11月7日圆满闭幕,经过三个多月的游戏征集、系列生态采访和
- 前些天的一些突发事件,使得我发现了Z-Blog存在的一个很严重的性能问题,就是当单篇文章日访问量数万的时候,会有大量并发用户同时写Acces
- 随着互联网发展的趋势,也越来越多的人依赖着互联网。网络教育、网上招聘、博客和上网购物、电子商务的交易等都与互联网息息相关。上网购物、应聘、交
- 网站推广一直都是个“老生常谈”的事情,很多人都在说,也都在做,而网站的推广对于我们来说也非常的重要,网站建立好后,如过不推出去的话,即便是在
- 一个好的网站,应该有一个好的域名,那样将事半功倍,否则很可能辛辛苦苦而结果却“事倍功半”。很多人经常会问我请教如何建站,如何推广等?其中有一
- 前面我们简单介绍了vmware vSphere 5.0,接下来,我们开始下载安装ESXi 5,下载地址为https://my.vmware.
- 最近对网站进行了更新,是"乾坤大挪移"(换空间服务商),忘了加重定向,导致搜索引擎给我的网站降权,在落伍者和dunsh.
- 介绍Netdata通过可扩展的Web仪表板提供准确的性能监控,可以显示Linux系统上的流程和服务。它监控有关CPU,内存,磁盘,网络,进程
- Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性:持久化数据与容
- Google帐户会默认绑定一个邮箱地址作为主关联邮箱,用户可直接用邮箱信息(比如邮箱地址、密码)登录Google的各种产品及服务。而现在,G
- 阅读上一篇:一个完美网站的101项指标.第四部分.设计网站的安全非常重要,如果您的网站中存在需要授权才能访问的内容,保护好这些内容是您的责任
- 一个让许多人首次感受互联网的浏览器将要消失于世间。自2008年3月1日起,现在由美国在线(AOL)拥有的网景领航员浏览器(Netscape
- 平常我都是使用任务时间表(Task Scheduler)来管理“工作站”与“文件
- 今天,我们很高兴地告诉大家谷歌推出了一款新翻译小工具,可以帮助网站站长们将自己网站支持的语言增加至一共 14 种。从云南丽江手工艺商店的网站