Azure webapp Web.config httpErrors 未重定向

Azure webapp Web.config httpErrors not redirecting

我有一个运行良好的 Azure 托管网站。我坚持的事情是希望忽略基础 URL 之后的任何内容,并始终让用户看到 整个站点的单个页面。 (如果他们输入 http://example.com 站点,之后的任何内容都将被忽略,并且会显示我的 map.html 页面。

我对 Web.config 文件进行了以下更改,这有助于此:

<system.webServer>
  <defaultDocument enabled="true">
    <files>
      <clear />
      <add value="map.html" />
    </files>
  </defaultDocument>
  <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404 path="/map.html" responseMode="ExecuteURL" />
  </httpErrors>
</system.webServer>

如果我输入 url 示例。com/xxxx.yyyy 站点显示正常(它忽略“/xxxx.yyyy”并显示 map.html 页面 -正是我想要的。但是如果我输入 example.com/xxxx 而没有尾随“.yyyy”),则以下 IIS 或 Azure 消息显示:

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404 The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporally unavailable...
Requested URL: /xxxx

无论 url 中的站点名称后面是什么,我怎样才能使相同的重定向发生?

我试过 Windows Edge、Chrome 和 Safari,它们都给出了相同的结果。

为了达到您的要求,您可以添加一条重写规则:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Rewrite to map">
        <action type="Rewrite" url="/map.html"/>
      </rule>
    </rules>
  </rewrite>


更新:

如果您在 ASP.NET 工作,您可能还需要在 Web.config 中指定 <customErrors> Element:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <system.web>
    <customErrors mode="On">
      <error statusCode="404" redirect="~/map.html" />
    </customErrors>
  </system.web>

  <system.webServer>
    <defaultDocument enabled="true">
      <files>
        <clear />
        <add value="map.html" />
      </files>
    </defaultDocument>
    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="/map.html" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>
</configuration>