利用ASP代码编写的404错误页实现所有网址精确转向功能


需要实现的功能:
例如:
用户访问 http://www.blueidc.cn/test.htm  
自动转向为 http://www.sunrc.com/test.htm

首先说说自定义404页面的方法。打开本机IIS网站,查看属性,自定义错误,找到404错误,双击修改其消息类型为 URL (消息类型不能为“文件”,否则不能转向),Url设置为网站根目录下文件。比如我希望自定义错误页面为网站中根目录下的404.asp这个文件,则设置URL为 /404.asp ,注意前面的斜杠。设置完成之后,当请求的文件不存在时,IIS会调用我们指定的脚本实现转向所有页面功能。

下面的代码是 404.asp 文件的代码,使用的时候只需要修改代码里面的域名就可以了。

<%
Response.Status = "404 Not Found"

Function GetUserCurURL()
    If Request.ServerVariables("HTTPS") = "on" Then
        GetUserCurURL = "https://"
    Else
        GetUserCurURL = "http://"
    End If
    GetUserCurURL = GetUserCurURL & Request.ServerVariables("SERVER_NAME")
    If (Request.ServerVariables("SERVER_PORT") <> 80) Then GetUserCurURL = GetUserCurURL & ":" & Request.ServerVariables("SERVER_PORT")
    GetUserCurURL = GetUserCurURL & Request.ServerVariables("URL")
    If (Request.QueryString <> "") Then GetUserCurURL = GetUserCurURL & "?" & Request.QueryString
End Function

thecururl=Request.ServerVariables("http_host")

if thecururl="www.blueidc.cn" or thecururl="blueidc.cn" then
   redirecturl=Replace(GetUserCurURL(),"blueidc.cn","sunrc.com")
   redirecturl=Replace(redirecturl,"404.asp?404;http://sunrc.com:80/","")
   redirecturl=Replace(redirecturl,"404.asp?404;http://www.sunrc.com:80/","")
   response.redirect redirecturl
end if
%>


正确定义 404 错误页面:
一、 对于已经存在的信息由于路径改变而导致访问不了时,应该在IIS 中定义404 错误指向一个动态页面,在页面里面使用301 跳转到新的地址,此时服务器返回301 状态码。

二、当访问一个错误的链接时,将调用404 页面,但由于在IIS 里面设置的不同将导致返回不同的状态码:
1. 404 指向的是一个htm 文件,此时页面返回的404 状态码,这是正确的。
2. 404 指向的是一个URL,例如 /error.asp,如果不在页面里面进行设置,仅仅是返回提示的HTML 代码,将导致页面返回200 状态码,此时的危害在于,当很多页面找不到时,都返回和访问正常页面时返回一样的200 状态码,将使搜索引擎认为该链接存在,并以错误页面的内容进行收录,当这样的链接很多时,将导致大量页面重复,使网站排名降低。处理方法:在显示完提示内容后,增加语句: Response.Status="404 Not Found" ,这样就保证页面返回404 状态码。
3. 避免在调用 404 页面的时候返回302 状态码,容易被搜索引擎认为是重定向作弊。

404页面详细介绍地址:http://baike.baidu.com/view/1402912.htm

[本日志由 随然 于 2011-04-08 10:55 PM 编辑]
上一篇: 在Excel 中建一个窗体中的按钮,实现按F9的效果
下一篇: 现在办一个网站,在工信部备案怎么就这么难呢?
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ASP 代码
相关日志:
评论: 0 | 引用: 0 | 查看次数: 12784
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1 字 | UBB代码 关闭 | [img]标签 关闭