2013-01-22 45 views
0

我有一个用于IIS(IIS 7.5,Win2K8 R2)的ColdFusion(CF10)自定义404处理程序,用于检查“友好的URL”,并且如果找到则返回适当的内容。例如:IIS中的ColdFusion自定义404处理程序 - 如何返回状态200好?

http://www.domain.com/user1返回相同的内容作为http://www.domain.com/?user=user1

似乎IIS仅返回前x(1000?)个字节的页,并且还返回404错误。是否有可能强制IIS返回200 OK?我试着向404处理程序添加:

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

但IIS仍然向浏览器返回404错误。

作为后续问题,有没有更好的方法来做到这一点?我可以使用URL重写模块吗?我认为这可能很困难,因为我认为它只匹配URL中的模式,并且友好的URL也可以匹配可能存在的文件夹名称。这就是我的404处理程序检查的对象。

+0

因为我似乎无法重写使用cfheader已经抛出的404错误,也许有一种方法在IIS中告诉它不要抛出404错误,然后我可以从404处理程序本身抛出它......除非那会触发IIS再次调用404处理程序? – Redtopia

回答

2

你在这里触及几件不同的事情。对于第一部分,SEO友好的URL,我会说IIS Rewrite是使用的工具。无需ColdFusion浪费这些处理时间。让IIS Rewrite处理它,并仅将有意义的内容传递给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处理设置。这些可以单独设置,也可以设置为一起工作(即,您的IIS 404处理程序可以指向您的ColdFusion 404处理模板)。这就是我通常设置我的服务器的方式。这使您能够记录,电子邮件,重定向等所有404错误。

+0

谢谢......我认为你是对的。我需要通过IIS中的URL重写模块来完成此操作。如果你有一分钟​​,也许你可以看看我的问题:http://stackoverflow.com/questions/14468014/iis-7-url-rewrite-do-i-include-the-http-or-https-protocol-在最正则表达式 – Redtopia

相关问题