我有一个用于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处理程序检查的内容。
答案 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错误。