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

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


内容的处理
新旧URL(内部的)
说明:
假定已经把文件bar.html改名为foo.html,需要对老的URL向前兼容,即让用户仍然可以使用老的URL,而感觉不到文件被改名了。
方案:
通过以下规则内部地重写老的URL为新的:
代码:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo.html$ bar.html
新旧URL(外部的)
说明:
仍然假定已经把文件bar.html改名为foo.html,需要对老的URL向前兼容,但是要让用户得到文件被改名的暗示,即,其浏览器的地址栏中显示的是新的URL。
方案:
作一个HTTP的强制重定向以改变浏览器和用户界面上的显示:
代码:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo.html$ bar.html [R]
依赖于浏览器的内容
说明:
至少对重要的顶级页面,有时候有必要提供依赖于浏览器的最佳的内容,即对最新的Netscape提供最大化的版本,对Lynx提供最小化的版本,而对其他的浏览器则提供一个功能一般的版本。
方案:
对此,内容协商无能为力,因为浏览器不提供其那种形式的类型,所以只能在HTTP头"User-Agent"上想办法。以下规则集可以完成这个操作:如果HTTP头"User-Agent"以"Mozilla/3"开头,则页面foo.html被重写为foo.NS.html,而后重写操作终止;如果是"Lynx"或者版本号为1和2的"Mozilla",则重写为foo.20.html;而其他所有的浏览器收到的页面则是foo.32.html:
代码:
RewriteCond % ^Mozilla/3.*
RewriteRule ^foo.html$ foo.NS.html [L]
RewriteCond % ^Lynx/.* [OR]
RewriteCond % ^Mozilla/[12].*
RewriteRule ^foo.html$ foo.20.html [L]
RewriteRule ^foo.html$ foo.32.html [L]
动态镜像
说明:
假定,需要在我们的名称空间里加入其他远程主机的页面。对FTP服务器,可以用mirror程序以在本地机器上维持一个对远程数据的最新的拷贝;对网站服务器,可以用类似的用于HTTP的webcopy程序。但这两种技术都有一个主要的缺点:此本地拷贝必须通过这个程序的执行来更新。所以,比较好的方法是,不采用静态镜像,而采用动态镜像,即,在有数据请求时自动更新(远程主机上更新的数据)。
方案:
为此,使用Proxy Throughput功能(flag [P]),以映射远程页面甚至整个远程网络区域到我们的名称空间:
代码:
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P]
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^usa-news.html$ http://www.quux-corp.com/news/index.html [P]
反向动态镜像
说明:
...
方案:
代码:
RewriteEngine on
RewriteCond /mirror/of/remotesite/$1 -U
RewriteRule ^http://www.remotesite.com/(.*)$ /mirror/of/remotesite/$1
通过Intranet取得丢失的数据
说明:
这是一种在受防火墙保护的(内部的)Intranet(www2.quux-corp.dom)上保存和维护实际数据,而虚拟地运行企业级(外部的)Internet网站服务器(www.quux-corp.dom)的巧妙的方法。这种方法是外部服务器在空闲时间从内部服务器取得被请求的数据。
方案:
首先,必须确保防火墙对内部服务器的保护,并只允许此外部服务器取得数据。对包过滤(packet-filtering)防火墙,可以如下制定防火墙规则:
代码:
ALLOW Host www.quux-corp.dom Port >1024 --> Host www2.quux-corp.dom Port 80
DENY Host * Port * --> Host www2.quux-corp.dom Port 80
按你的实际配置,只要对上例稍作调整即可。接着,建立通过代理后台获取丢失数据的mod_rewrite规则:
代码:
RewriteRule ^/~([^/]+)/?(.*) /home/$1/.www/$2
RewriteCond % !-f
RewriteCond % !-d
RewriteRule ^/home/([^/]+)/.www/?(.*) http://www2.quux-corp.dom/~$1/pub/$2 [P]
标签:apache,mod_rewrite,url,rewrite,虚拟主机,服务器
0
投稿

猜你喜欢

  • 国外域名商ResellerClub与支付宝达成合作协议

    2010-04-02 12:44:00
  • 解析网络广告

    2009-05-24 04:22:00
  • 谈威客平台的软件开发

    2008-01-21 11:41:00
  • 与Google竞争 微软推在线编辑工具WorkSpace

    2007-10-02 17:01:00
  • Kingsaas开辟IT站点及个人网赚蓝海

    2009-07-24 18:52:00
  • 赢在巨人网游《仙途》30日启动不删档测试

    2009-10-31 09:33:00
  • 社区管理员秘籍:如何用任务系统聚人气

    2009-04-23 12:16:00
  • 自动监控VPS负载并重启Web服务的脚本

    2011-05-18 11:15:00
  • 用GridFTP传送文件

    2007-10-29 13:44:00
  • linux 基础命令大全

    2023-08-21 17:55:28
  • VPS主机CentOS系统安装LNMP环境图文教程分享

    2023-08-06 12:31:29
  • centOS7下Spark安装配置教程详解

    2022-01-20 17:52:59
  • Linux下使用Rsync完成自动化备份

    2023-11-03 06:27:28
  • FTP使用FAQ

    2009-12-22 18:45:00
  • Centos6.5全自动安装 vsftpd+dhcp+nfs+tftp

    2023-10-05 06:29:44
  • IXWebHosting主机域名管理图文解说

    2010-03-23 10:42:00
  • 百度搜索地域性加强后的利和弊

    2008-12-25 00:28:00
  • QQ2010 Beta优先体验正式开始下载

    2009-10-15 17:12:00
  • 让外贸网站更加的人性化

    2008-01-11 13:49:00
  • 企业网站优化简谈

    2009-01-15 17:36:00
  • asp之家 网站运营 m.aspxhome.com