Я использую сайт Sitefinity CMS на IIS 7. Я вижу несколько странных результатов, когда пытаюсь вернуть статус 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, код 302 возвращается для text.aspx, а затем статусиз 200 для /404.aspx?aspxerrorpath=/test.aspx.
Я не до конца понимаю, что здесь происходит, похоже, что IIS вообще не отвечает кодом состояния - это разработано?Кажется совершенно сумасшедшим!
Если это так, предположительно, единственный способ решить эту проблему - программно вернуть правильный код ответа?
Заранее спасибо, хиггси