App_Offline.htm使用UrlRewrite重定向

本文关键字:UrlRewrite 重定向 使用 htm Offline App | 更新日期: 2023-09-27 18:26:55

我们托管一个多租户网站,该网站根据域名进行品牌设计,以适合客户。该网站是使用Asp.net MVC4开发的。

我们计划在维护期间使用app_offline.htm文件使网站离线。但是,我们希望维护页面以域名为基础。为了实现这一点,我们决定使用UrlRewrite模块。

重写规则的逻辑是,如果请求来自特定域,并且网站中存在app_offline.htm文件,则重定向到该域特定(品牌)的app_offline页面。我们的web.config中的规则如下:

   <!-- App_Offline redirects -->
  <rewrite>
  <rules>
    <rule name="Domain1 App_offline redirects" stopProcessing="true">
      <match url="^(.)*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^domain1" />
        <add input="{DOCUMENT_ROOT}/app_offline.htm" matchType="IsFile" />
        <add input="{REQUEST_URI}" pattern="domain1.app_offline.htm" negate="true" />
      </conditions>
      <action type="Redirect" url="https://{SERVER_NAME}/domain1.app_offline.htm" />
    </rule>
    <rule name="Domain2 App_offline redirects" stopProcessing="true">
      <match url="^(.)*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^domain2" />
        <add input="{DOCUMENT_ROOT}/app_offline.htm" matchType="IsFile" />
        <add input="{REQUEST_URI}" pattern="domain2.app_offline.htm" negate="true" />
      </conditions>
      <action type="Redirect" url="https://{SERVER_NAME}/domain2.app_offline.htm" />
    </rule>
  </rules>
</rewrite>

我们现在面临的问题是,尽管这个Url重写规则生效并将用户重定向到品牌离线页面,但它最初显示的是非品牌app_offline.htm页面的内容。几秒钟后,在刷新页面时,会显示实际的品牌内容。

我们还注意到,当显示通用app_offline.htm内容时,HTTP响应为503,而当稍后显示品牌app_offline.htm时,HTTP状态为200。

有什么方法可以克服通用app_offline.htm内容的初始显示问题吗?

您是否发现上述Url重写方法存在任何性能问题?

提前谢谢。

编辑:我已经意识到,刷新特定于域的app_offline页面会将其缓存在浏览器中,而这正是显示内容的地方。在不刷新品牌app_offline页面的情况下,尝试访问网站上的任何其他页面总是显示通用的app_offline.htm内容:)因此,正在寻找替代方案。。。。

App_Offline.htm使用UrlRewrite重定向

找到了这个问题的解决方案。

  1. 创建了一个名为"脱机"的新文件夹
  2. 已将域特定的app_offline.htm页面移动到此脱机文件夹
  3. 将"脱机"文件夹设置为IIS中的应用程序

适用于IIS Express和IIS