IIS7でSitefinityCMSWebサイトを実行しています。404ステータスを返そうとすると、奇妙な結果がいくつか表示されます。
次のようなURLにアクセスした場合:
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が返されます。
ただし、次のURLが入力されている場合:
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をチェックすると、text.aspxに対して302コードが返され、次に/404.aspx?aspxerrorpath=/test.aspxに対してステータス200が返されます。
ここで何が起こっているのか完全には理解していません。IISがステータスコードでまったく応答していないようです。これは仕様によるものですか?完全にクレイジーなようです!
設計によるものである場合、おそらくそれを解決する唯一の方法は、プログラムで正しい応答コードを返すことですか?
よろしくお願いしますhiggsy