2009-10-09 40 views
0

我有一个自定义404错误处理页面我可以在404 File Not Found错误处理页面中包含哪些技术功能?

它查找数据库表中的URL并重定向,如果有合适的目标。网址被记录,连同提供的重定向(如果有的话),我们的应用程序有一个管理报告,显示哪些网址被捕获,允许客户设置更多等。

我们有一个单一的特定的Images文件夹,但是我们得到格式不正确的路径的图像请求。我们可以在/ IMAGES /中找到匹配的图像名称,我们会将其返回。我应该使用301吗? (我们现在返回200)

我们在管理报告中突出显示这些 - 因为可能是CMS或批量电子邮件中存在错误或其他问题,并且通过重定向我们只是掩盖问题(并修复它帮助表现我想?)

我想知道如果我们应该返回一个虚拟的图像,当我们得到一个404缺少JPG/GIF/PNG?目前,我们正在返回404结果和HTML中的一个遗憾页面 - 这让我觉得有点愚蠢,如果有404响应代码,用户的浏览器是否会对返回的图像做任何有用的操作?

我还想知道,如果返回一个图像“图像未找到,请访问www.example.com”将是有益的(也许具体如果我的域名不是推荐人!)。然后这个毫无用处的人将我们的图像嵌入到他们的网站中,错误的是,这可能至少会带来一些流量。

同样,如果我得到一个有用的JS或CSS文件的404请求,我应该返回一些有用的东西吗?至少,我在DEV的想法是,知道我们已经疯狂起来会很方便。有时,缺失的文件在使用上可能足够模糊,因此在质量保证中缺少文件缺失。 (我想有人OUGHT注意到它在404日志!),但我想也许设置BODY到一个巨大的东西,或返回的.JS文件中的警报,可能会帮助DEV。

在我今天谷歌搜索中,我还谈到了一个格式错误的查询字符串可能会返回一个“400错误请求”和一个格式正确的查询字符串的提示,但是一个参数具有无效值(例如找不到产品代码)可以被视为404。如果我这样做,并且返回内容(例如说明页面),用户是否会看到该内容,或者他们的浏览器是否将其替换为404错误页面? (我有一种感觉,早期版本的IE做到了这一点?)

所有的想法赞赏。

(经典ASP/IIS在我的情况,但希望这个问题是通用的)

编辑:我也想知道,如果有人确实anythign特殊的东西,看起来像知名黑客攻击?

  • http://www.example.com:80/ 管理/ phpMyAdmin的/脚本/ setup.php
  • http://www.example.com:80/ 管理/ PMA /脚本/setup.php
  • http://www.example.com:80/ 管理/脚本/ setup.php
  • http://www.example.com:80/分贝/脚本/设置.php
  • http://www.example.com:80/ dbadmin/scripts/setup。PHP
  • http://www.example.com:80/ myadmin /脚本/ setup.php
  • http://www.example.com:80/ 的mysql /脚本/ setup.php
  • http://www.example.com:80/ 中mysqladmin /脚本/ setup.php
  • http://www.example.com:80/ phpadmin /脚本/ setup.php
  • http://www.example.com:80/ phpMyAdmin/scripts/setup.php
  • http://www.example.com:80/ phpmyadmin1 /脚本/ setup.php
  • http://www.example.com:80/ phpmyadmin2 /脚本/ setup.php
  • http://www.example.com:80/ PMA /脚本/ setup.php
  • http://www.example.com:80/ 网页/脚本/ setup.php

和这些“触角”:

  • 的http://www.example.com中:80/_vti_bin/owssvr.dll ...
  • 的http://www.example.com中:80 /的MSOffice/cltreq.asp ...

编辑2:对不起,希望最后一次。

我应该分配一个会话ID吗?这将使我能够追踪用户在第二次尝试时是否回到了更聪明的位置(这可能会导致我们向Redirect表添加条目)。创建会话涉及在数据库和其他一些东西中创建会话记录,所以并不像仅仅发出404错误那样“便宜”

+0

一个友好的提示,缩短您的问题文本或分成几个独立的问题。一次吸入太多了。 – csl 2009-10-09 15:14:47

回答

0

我曾经做过一个动态生成图像的网页。问题是如何在图像无法呈现时传播错误。

我认为这个解决方案非常好,只是简单地在图像本身中打印错误信息。然后你可以HREF图像,如果它不起作用,你会得到打印出的错误信息。比仅仅返回无效图像更好。

对于JS文件,你可能也一样,但我不知道这是否是一个好的设计。在这种情况下,我认为即使返回空文本文件也不会有好处。你可能在警报箱中返回错误消息,并将它们挂接到你的主应用程序中,但我想这对开发人员更有用,而不是普通用户。 (取决于你的用户是谁)。我认为CSS也是如此。

对于通常的错误消息,如果您只想知道已达到无效URL,您可以搜索服务器日志,也可以将JS脚本隐藏在某处记录信息性消息的JS/CSS URL后面。

最后,请记住,HTTP代码是有原因的。您可以期望客户端比“伪造”和看起来好的输出(从HTTP角度来看)更好地处理有效的HTTP错误代码。换句话说,在正常情况下不适用的情况下,您可以使用它来获得更多的优势,并使用更具体的HTTP错误代码进行响应。