Chinaunix首页 | 论坛 | 博客
  • 博客访问: 139761
  • 博文数量: 57
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-04 22:57
文章分类

全部博文(57)

文章存档

2011年(1)

2010年(1)

2009年(55)

我的朋友

分类: 系统运维

2009-06-01 14:50:18

避免重定向

重定向使用301和302状态码来完成。下面是一个HTTP头中的301响应的重定向:

HTTP/1.1 301 Moved Permanently
Location:
Content-Type: text/html

浏览器会自动将用户重定向到Location字段中指定的网址。所有必要的信息都在头信息中。响应体通常是空的。301、302响应是在实际中是不缓存的,除非特地用Expires或Cache-Control表明。HTML的Meta Refresh标签或用JavaScript也可以将用户定向到不同的网址,但如果你必须做重定向,首选的方法是使用标准的3xx HTTP状态码,主要是为了确保浏览器后退按钮的正常工作。
 
值得注意的是,重定向让用户感觉网页速度很慢。
 
其中最浪费的重定向频繁地发生和Web开发人员通常都不知道这件事。它发生在结尾缺少斜线“/”的URL,结尾应该有“/”。例如,要访问,结果一个301响应重定向到了(注意“/”)。如果你使用的是Apache,在其中使用Alias或mod_rewrite或DirectorySlash指令修复了这个问题。
 
连接老网站自动跳转到新网站是另一种常用的重定向。其他包括连接不同地区的一个网站,或根据某些条件重定向(浏览器类型,用户帐户信息等)。使用重定向来连接两个网站非常简单,几乎不需要额外的编码。虽然使用重定向在这些情况下降低了开发者的复杂性,但它降低了用户体验。
 
如果两个代码路径托管在同一台服务器上,替代方式是使用Alias和mod_rewrite。如果一个域名变化的原因需要使用重定向,替代方式是创建CNAME(一个DNS记录,创造了一个指向另一个网域名称的别名),结合使用Alias或mod_rewrite 。
阅读(938) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~