iis-7.5 - IIS 7.5 自定义 404 错误页面不适用于 Web 根索引/默认

标签 iis-7.5 custom-error-pages

使用 IIS 7.5,我创建了一个自定义 404(和 403.14)错误页面,如果未找到静态文件,该页面会显示数据库中的内容。

换句话说,如果我浏览到 http://mysite.com/test/如果在该位置找不到物理索引或默认文件,则 IIS 会执行我的 404 自定义错误页面,该页面会解析 url,并显示存储在数据库中的页面,或者显示找不到该页面的通知。

一切工作正常,只是 IIS 不会显示 Web 根索引/默认页面的 404 页面。

网络根目录中没有文件 - 这是我观察到的结果:

  • mysite.com:完全空白的页面
  • mysite.com/:完全空白的页面
  • mysite.com/index.aspx:正确显示我的自定义错误页面。
  • mysite.com/default.aspx:正确显示我的自定义错误页面。
  • mysite.com/index.htm:正确显示我的自定义错误页面。
  • mysite.com/anything_else/:正确显示我的自定义错误页面。

我的 Web.config 文件包含:

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/_page/" responseMode="ExecuteURL" />
    <error statusCode="403" subStatusCode="14" path="/_page/" responseMode="ExecuteURL" />
</httpErrors>

我想将主页的内容存储在数据库中,就像网站的其他动态页面一样,但经过多次搜索后仍然无法找到如何让 IIS 在主页索引/默认页面时显示我的自定义错误页面未找到。

任何帮助/想法将不胜感激。

饲料

最佳答案

我最终通过使用网络根索引本身作为自定义错误页面而不是像“/_page/”这样的另一个页面来解决这个问题。

这对除 SSL 重定向之外的所有内容都有效,我认为这不是一个足以阻碍该项目的大问题。

在系统中,每个页面都明确设置为 http 或 https。如果用户使用 http 地址导航到 https 页面,那么他们将被重定向到 https 版本,反之亦然。但是,使用根索引作为自定义错误页面意味着此重定向不适用于主页,因为 IIS 不会出于某种原因将页面重定向到其自身。

如果有人知道如何解决这个问题,我将非常感谢您的想法。但原来的问题本质上已经解决了。

希望阅读本文对某人有所帮助。

饲料

更新 - 2012 年 8 月 17 日:

好吧,我向微软调用了支持电话(虽然很费力,但最终取得了成果),但我终于找到了根本问题的答案

当我第一次设置网络服务器时,出于安全原因,我没有安装“目录浏览”模块。我不希望 Web 客户端能够看到文件结构。

事实证明,需要安装目录浏览模块(即使已禁用)才能使 IIS 响应除 200OK(并生成空白 html 页面)之外的任何内容。

安装后(出于安全原因而禁用),IIS 现在会响应 403.14 Forbidden 错误,我已经在 web.config 中正确重定向了该错误。

关于iis-7.5 - IIS 7.5 自定义 404 错误页面不适用于 Web 根索引/默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997772/

相关文章:

struts2 - WebSphere Application Server 8 (WAS 8) 上的 Struts 2 和自定义错误页面

java - 如何在 Websphere 应用程序服务器中设置服务器级别自定义错误文本

MySQL:如何使用多个连接?

c# - 403.14 - 在 IIS 中 Controller 名称和 Controller 目录名称相同时禁止访问

asp.net - 如何在 NLog 中获取 IIS 站点名称

iis - 将所有裸域 url 重定向到保留 url 的子域 (www) url,IIS/ASP.NET 上的一页除外

iis - 当服务(例如 ColdFusion)关闭时,IIS 7.5 中的自定义错误页面

redirect - 404 错误自定义页面适用于 .cfm 扩展名,但不适用于 .html?

php - 自定义错误页面不适用于 Apache 和 nginx 设置的 .htaccess

asp.net-mvc-3 - Webforms 应用程序路由内的 MVC3 应用程序在 IIS7.5 中引发 HttpContext.SetSessionStateBehavior 错误