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>
我有一个运行良好的 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>