Веб-приложение Azure Web.config httpErrors не перенаправляет

У меня есть сайт в 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-адрес example.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, и все они дают одинаковые результаты.

1 ответ

Решение

Чтобы удовлетворить ваши требования, вы можете вместо этого добавить правило перезаписи:

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


Обновить:

Если вы работаете в ASP.NET, вам также может понадобиться указать <customErrors> Элемент в Web.config:

<?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>
Другие вопросы по тегам