IIS中的ColdFusion自定义404处理程序 - 如何返回状态200 OK?

时间:2013-01-22 18:53:51

标签: iis coldfusion iis-7.5 http-status-code-404 coldfusion-10

我有一个用于IIS(IIS 7.5,Win2K8 R2)的ColdFusion(CF10)自定义404处理程序,用于检查“友好网址”,如果找到则返回相应的内容。例如:

http://www.domain.com/user1返回与http://www.domain.com/?user=user1

相同的内容

似乎IIS只返回页面的前x(1000?)字节,并且还返回404错误。是否有可能强制IIS返回200 OK?我尝试添加:

<cfheader statusCode="200" statusText="OK">

到404处理程序,但IIS仍然将404错误返回给浏览器。

作为后续问题,有更好的方法吗?我可以使用URL Rewrite模块吗?我认为这可能很难,因为我认为它只匹配URL中的模式,友好的URL也可以匹配可能存在的文件夹名称。这就是我的404处理程序检查的内容。

1 个答案:

答案 0 :(得分:2)

你在这里谈到几件不同的事情。对于第一部分,SEO友好的URL,我会说IIS Rewrite是使用的工具。无需在这些上使用ColdFusion废物处理时间。让IIS Rewrite处理它,只将有意义的东西传递给ColdFusion。如果您使用Google iis rewrite for seo friendly urls,则可以找到数以千计的示例。

对于问题的第二部分,处理404错误。我建议您不要为这些返回200 OK状态代码。毕竟他们是404。而是让您的404处理程序(如果可能)通过发出301 Moved Permanently状态代码重定向到新的(或想要的)页面。它不仅会将您的访问者推向正确的页面,而且还会让搜索引擎机器人感到满意。如果您没有重定向访问者的页面,那么请务必返回正确的404 Not Found状态代码。也许在最终的404页面上包含一些指向您网站最常见页面的链接。同样,谷歌是你的朋友,搜索301 redirect for 404 errors之类的例子。请记住,对于301重定向,您还需要包含新位置(用于重定向)。像这样:

<cfheader statuscode="301" statustext="Moved Permanently">
<cfheader name="Location" value="http://www.newlocation.com">

顺便说一下,你并没有真正提到你在IIS和/或ColdFusion中如何进行404处理设置。这些可以单独设置,也可以设置为一起工作(即IIS 404处理程序可以指向ColdFusion 404处理模板)。这就是我通常设置服务器的方式。这使您能够记录,发送电子邮件,重定向等所有404错误。