Веб-приложение 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>