如何在 IIS7 上构建站点保存页面?

Posted

技术标签:

【中文标题】如何在 IIS7 上构建站点保存页面?【英文标题】:How to Construct a Site Holding Page on IIS7? 【发布时间】:2011-05-13 22:30:16 【问题描述】:

我想建立一个保留页面,以便在站点维护期间我们可以显示适当的内容。

购物清单:

轻松切换开/关 不希望 Google BOT 认为所有页面都消失了 NOINDEX/NOFOLLOW 不希望用户看到 IIS7 的“ERROR 500 go away”消息 - 改为显示我的自定义页面

我们曾经在站点中有一个 ASP“保留页面”,所有 URL 都会被路由到该页面。自从迁移到 IIS7 和 SEO 友好的 URL 重写之后不再可行。

因此,我们一直使用一个单独的 IIS 站点,该站点仅包含一个保留页面 DEFAULT.ASP 和一个 404 处理程序,以便任何 URL 都可以路由到该站点。然后,我们必须在 IIS Config 中切换 IP 地址或主机头域名(并且我们有一个绕过 PREVIEW.MyDomain.com 以在推出期间进入 Live 站点)

我们需要设置一个响应代码 - 我认为 503“服务不可用”最合适? (虽然Custom Error Page for Http Error 503 似乎表明 IIS7 不会显示带有错误 503 的自定义页面?)

为了防止人们看到 IIS7“ERROR 500 go away”消息,我认为我们需要设置这个“保留站点”以允许详细错误?

主应用程序仍然是 Classic-ASP,但对于持有页面站点,我们可以实现 ASP.NET,如果这能让我们克服一些障碍。

是否有另一种方法可以在站点内处理此问题(因此所有请求都转到保留页面,但有一些后门,以便我们可以在删除保留页面之前测试站点升级)[请看我的想法下面]

目前,在 IIS 站点之间切换 IP 地址(或主机标头名称)并不是一项巧妙的操作 - 对于涉及的 6 个 IIS 站点,手动操作需要一两分钟。也许我们可以只拥有可以切换的 Web.Config 文件——尽管我认为这很可能意味着最近对设置的一些更改会在清洗中丢失:(

可能的替代实现:

我们一直在考虑使用 DEFAULT.ASP(我们的网站通过单个 ASP 页面来处理所有请求),它允许设置标志并显示持有页面。然后会有一个“后门”供开发人员设置 Cookie(或者可能是 IP 地址“绕过”列表),以便在升级推出期间,他们可以在删除保留页面标志之前看到网站一切正常。

当前独立的Holding Site的一个好处是可以在那里部署任何html / Images / CSS,而在实时站点上,Holding页面必须假设任何东西,包括图像和CSS文件等,都可能被更改为升级的一部分 - 然后人为错误会阻碍!

【问题讨论】:

【参考方案1】:

如果您拥有多台服务器,您可以使用 IIS 的应用程序请求路由插件(它是免费的)。它允许您轻松创建网络农场。您可以从池中拉出服务器,但仍通过其直接 IP 地址进行测试,用户将通过 ARR 服务器访问维护页面。

此外,ARR 允许您在任何情况下发送所需的任何响应代码。

【讨论】:

我花了几个小时试图弄清楚如何通过 ARR 重写响应代码。我尝试使用出站规则重写 RESPONSE_STATUS 服务器变量,但根据 Fiddler 的说法,当我尝试重写为 503 时,它仍然得到 200 OK。

以上是关于如何在 IIS7 上构建站点保存页面?的主要内容,如果未能解决你的问题,请参考以下文章

从 CASSINI 传递到 IIS 7

如何使用 ASP.NET Core RC2 MVC6 和 IIS7 获取当前 Windows 用户

当您在一个站点上有多个页面并且单击链接只是向下滚动时,如何调用页面?

如何从命令提示符将 SSL 证书分配给 IIS7 站点

如何在站点配置中为相同的根页面 ID 配置多个域?

Django 如何构建依赖于站点的 URL?