我正在IIS 7上运行一个Sitefinity CMS网站。当我试图返回404状态时,我看到了一些奇怪的结果。IIS 7错误代码
如果我去像一个网址:
www.mysitefinitywebsite.com/test.co.uk(我意识到这是一个无效的地址,但有人进入它进入CMS)
由于上面没有一个ASPX页面,我相信IIS处理错误,用下面的代码:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
在地址栏中的URL保持不变,显示我的自定义404页(/404.aspx)页面,然而,返回http状态码200。
然而,如果下面的网址是键入:
www.mysitefinitywebsite.com/test.aspx - 的ASPX错误处理程序踢在以下配置:
<customErrors mode="On" >
<error redirect="~/Sitefinity/nopermissions.aspx" statusCode="403" />
<error redirect="~/404.aspx" statusCode="404" />
</customErrors>
同样,我的自定义404显示页面,但是URL地址栏更改为:
www.mysitefinitywebsite.com/404.aspx?aspxerrorpath=/test.aspx
而且奇怪的是,如果我检查Firebug,则返回302代码为text.aspx,然后为/404.aspx?aspxerrorpath=/test.aspx返回200的状态。
我不完全理解这里发生了什么,它似乎是IIS没有响应与状态代码 - 是由设计?似乎完全疯了!
如果是通过设计,大概解决它的唯一方法是以编程方式返回正确的响应代码?
在此先感谢 higgsy