2

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

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

除了 IIS 不会显示 Web 根索引/默认页面的 404 页面外,一切都运行良好。

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

  • 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 在找不到主页索引/默认页面时显示我的自定义错误页面.

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

饲料

4

1 回答 1

3

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

这适用于除了 SSL 重定向之外的所有内容,我认为这不是一个足以支撑项目的大问题。

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

如果有人知道如何解决该问题,我将非常感谢您的想法。但原来的问题基本解决了。

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

饲料

更新 - 2012 年 8 月 17 日:

好吧,它给微软打了一个支持电话(艰巨,但最终富有成效),但我终于找到了根本问题的答案

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

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

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

于 2012-04-25T21:52:41.197 回答