Apache的ReWrite的应用mod_rewrite模块使用(5)

来源:asp之家 时间:2010-04-04 18:44:00 


为外来访问者重定向宿主目录
说明:
对不是来自本地域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:会在稍后被其特殊的传送规则扩展。

 

标签:apache,mod_rewrite,url,rewrite,虚拟主机,服务器
0
投稿

猜你喜欢

  • Linux远程登录实现教程解析

    2023-10-13 08:52:39
  • GoDaddy域名注册图文教程

    2009-11-21 13:07:00
  • 手把手教你使用 virtualBox 让虚拟机连接网络的教程

    2021-01-08 00:43:32
  • 搜索的是提供信息的网站 导出链连重要吗

    2008-12-05 08:14:00
  • 网站设计时应注意的十个搜索引擎优化细节

    2009-01-04 09:05:00
  • 彻底清除本地和远程系统日志文件

    2009-12-05 19:14:00
  • UCenter Home 2.0正式版官方上线 开源产品包预计将在8月底前推出

    2009-08-19 14:21:00
  • Apache 配置多端口 多虚拟主机 局域网访问示例

    2023-07-04 00:50:02
  • 让SEO更大的作用

    2009-01-16 16:39:00
  • 七个维护服务器安全的技巧

    2008-12-30 14:22:00
  • 动态库调用静态库示例讲解

    2023-02-17 15:28:57
  • linux防火墙配置教程之允许转发实验(2)

    2023-06-15 09:58:10
  • 新手建站常识:IDC名词扫盲

    2010-01-20 22:49:00
  • 防止SQL注入攻击的方法

    2008-10-10 15:35:00
  • 网易邮箱收不到GoDaddy系统发来的邮件

    2010-04-08 12:40:00
  • 网站流量与盈利终端

    2007-11-05 13:58:00
  • 谷歌内容定向的最佳实践

    2009-03-21 10:11:00
  • 看Google如何审核你的网站

    2008-08-06 20:22:00
  • 虚拟机备份应该注意的五个问题

    2009-09-19 20:29:00
  • FTP文件传输协议

    2009-12-18 19:06:00
  • asp之家 网站运营 m.aspxhome.com