【发布时间】:2012-01-09 07:57:57
【问题描述】:
我有一个混合了 .html 和 .aspx 页面的站点,该站点在带有 IIS 7.5 的 W2K8 R2 服务器上运行。该站点是对旧站点的重新开发,所有 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(缺少的页面位于子文件夹中)会得到一个奇怪的结果:
- http://www.example.com/folder/not-a-real-page.aspx
- http://www.example.com/folder/not-a-real-page.aspx
子文件夹 URL 发生的情况是我从 404.aspx 页面获取 HTML 标记,但页面无法正确呈现,因为页面中的所有 CSS 和脚本引用都丢失了,我可以从嗅探网络流量中分辨出来,因为 IIS 试图以某种方式将 /folder/ 插入 URL 以获取我的 404.aspx 页面中具有相对路径的资源。例如,我的站点根文件夹中的 404.aspx 页面引用了 css/style.css,但对于 /folder/ 中缺少页面触发的 404 页面,浏览器正在尝试下载:/folder/css/style.css - 其中显然不存在。
有人知道我在这里做错了什么吗?
【问题讨论】:
标签: asp.net redirect iis-7 web-config http-status-code-404