网站改版时的一种新旧版过渡方案

网站改版时,需要考虑一个周全的过渡方案,其中不容忽视的一点就是对旧版的处理问题。即使借助完美的数据迁移方案可以使新版从内容上完全取代旧版,但我们仍然不应该立即彻底废除掉旧版,因为:

  1. 网民有可能通过浏览器收藏夹或网摘工具收藏了旧版的很多URL;
  2. 搜索引擎可能记录了旧版的很多URL;
  3. 其它网站页面可能有很多对旧版页面的链接。

因此此时让旧版下线,大部分链接也就失效了,用户以为网站不复存在了,流量突然减少,排名下降,且影响长久。于是新旧版的过渡应该尽量达到下面的要求:

  1. 曾有的链接地址仍然有效;
  2. 即使用户去了旧版,也要尽量把用户带向新版;
  3. 避免用户在旧版发布数据。

下面是一个实例,网站www.abc.cn新版即将上线,我们大概需要做这样一些工作:

  1. 新版开发中,定义404错误(找不到网页)处理程序,将找不到网页的URL中的www替换为www1,然后重定向。
  2. 在abc.cn域名管理平台中新建一条DNS的A记录:www1.abc.cn,指向旧版主站服务器。
  3. 新版上线时,将A记录www.abc.cn修改为指向新版主站服务器。
  4. 关闭旧版的用户注册、登录和发布信息的入口。旧版中对首页的链接全部改为绝对路径www.abc.cn。
  5. 一定时间(例如2个月)后,修改新版的404错误处理程序,不再重定向到旧版对应页面,而是重定向新版某页面,比如提示“您访问的页面不存在”,并自动跳转到新版首页。
  6. 同时进入abc.cn域名管理平台,删除A记录www1.abc.cn,彻底废除旧版的可访问性。完成新旧版的过渡。

自定义404错误处理程序的具体方法如下。首先制作error404.html,新建错误处理页面error404.html,在<body></body>之间编写如下代码:

<script language=”javascript”>
var url_host=document.location.host;//获取主机名,例如www.abc.cn
var url=escape(document.location);//获取URL串,例如http://…/…/208.html
var url_new=url.replace(url_host,”www1.abc.cn”);
window.location=url_new;//浏览器窗口重定向
</script>

指定Apache错误处理文件。在Appache2/conf/httpd.conf文件中自定义错误处理程序,指向刚才制作的error404.html。

# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 “The server made a boo boo.”
#ErrorDocument 404 /missing.html
#ErrorDocument 404 “/cgi-bin/missing_handler.pl”
ErrorDocument 404 /… /error404.html
#ErrorDocument 402 http://www.example.com/subscription_info.html

指定Tomcat错误处理文件。在web.xml中添加如下代码:

<error-page>
<error-code>404</error-code>
<location>/../error404.html</location>
</error-page>

(2006年3月6日北京白石桥)