У меня есть сайт со смесью страниц .html и .aspx, работающий на сервере W2K8 R2 с IIS 7.5. Сайт представляет собой реконструкцию старого сайта, и все URL-адреса и большая часть контента изменились со старого сайта на новый. Я ожидаю получить число 404, поскольку люди используют старые ссылки.
Я хочу перенаправить 404 ошибки на пользовательскую страницу (/404.aspx). Это (часть) моего web.config:
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx"
responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
Режим управляемого конвейера для пула приложений для этого сайта: Integrated
.
Это перенаправление на мою пользовательскую страницу 404.aspx иногда работает хорошо, а в других случаях - только вид работы. Такие URL-адреса перенаправляют просто отлично:
Однако такие URL-адреса (где отсутствующая страница находится в подпапке) дают странный результат:
Что происходит с URL-адресами подпапок, так это то, что я получаю разметку HTML со страницы 404.aspx, но страница не отображается должным образом, поскольку все ссылки на CSS и скрипты на странице отсутствуют, насколько я могу от перехвата сетевого трафика, потому что почему-то IIS пытается вставить /folder/
в URL для ресурсов с относительными путями на моей странице 404.aspx. Например, моя страница 404.aspx, которая находится в корневой папке моего сайта, имеет ссылку на css/style.css
, но для страницы 404, вызванной отсутствующей страницей в / folder /, браузер пытается загрузить: /folder/css/style.css
- что очевидно не там.
Кто-нибудь знает, что я здесь не так делаю?