使用 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/