我有一个用于IIS (IIS7.5,Win2K8 R2)的ColdFusion (CF10)自定义404处理程序,它检查“友好的urls",如果找到就返回适当的内容。例如:
http://www.domain.com/user1返回与http://www.domain.com/?user=user1相同的内容
IIS似乎只返回顶部的x (1000?)字节,并且还返回404错误。是否有可能强制IIS返回200OK?我尝试添加:
<cfheader statusCode="200" statusText="OK">发送到404处理程序,但IIS仍将404错误返回给浏览器。
作为后续问题,有没有更好的方法来做到这一点?我可以使用URL重写模块吗?我认为这可能很困难,因为我认为它只匹配URL中的模式,友好的URL也可以匹配可能存在的文件夹名称。这就是我的404处理程序所要检查的。
发布于 2013-01-23 03:46:51
您在这里涉及到几个不同的东西。对于第一部分,SEO友好的URLS,我想说IIS重写是可以使用的工具。不需要在这些方面浪费ColdFusion的处理时间。让IIS重写来处理它,只将有意义的东西传递给ColdFusion。如果你在谷歌上搜索像iis rewrite for seo friendly urls这样的东西,你可以找到成千上万的例子。
对于您问题的第二部分,处理404个错误。我建议您不要为这些代码返回200 OK状态代码。他们毕竟是404的。相反,通过发出301 Moved Permanently状态代码,让404处理程序(如果可能)重定向到新的(或想要的)页面。它不仅会把你的访问者推到正确的页面,而且还会让搜索引擎机器人满意。如果您没有一个页面来重定向您的访问者,那么一定要返回一个适当的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处理。这些可以单独设置,也可以一起设置(例如,IIS404处理程序可以指向ColdFusion 404处理模板)。这就是我通常设置服务器的方式。这使您能够记录,电子邮件,重定向等所有您的404错误。
https://stackoverflow.com/questions/14465908
复制相似问题