我正在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