0

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

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 重写模块吗?我认为这可能很困难,因为我认为它只匹配 URL 中的模式,友好的 URL 也可以匹配可能存在的文件夹名称。这就是我的 404 处理程序检查的内容。

4

1 回答 1

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 重定向的 404 错误示例。请记住,对于 301 重定向,您还需要包含新位置(用于重定向)。像这样:

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

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

于 2013-01-22T19:46:51.057 回答