如何解决API支持的React SPA的app_offline和index.html
我有一个React SPA,它与WebAPI后端通信。所有内容都来自同一个IIS网站,并且我们有一些重写规则将所有请求发送到index.html。这样做正常,但是当我将app_offline.htm
文件放到根目录中时,尽管API已正确关闭(返回503),但服务器仍在提供index.html而不是app_offline.htm,它只是显示一个服务器错误的登录页面。
我的web.config如下。我确信一切都在正确的地方,但是index.html仍然在其他所有内容之前提供。我已经尝试过“ runAllManagedModulesPerRequest = true”,但是它不起作用。我觉得UrlRewrite规则只是从index.html获取内容并将其覆盖app_offline ...
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="api/*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
<rewrite>
<rules>
<rule name="React Rewrite" enabled="true" stopProcessing="true" patternSyntax="ECMAScript">
<match url="(.*)" negate="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="(/api/)(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="(/content/)(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="(/static/)(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>
更新: 只是为了澄清上面的web.config。目的是能够使用“ http://blah.com/customer/3/orders”之类的网址。此处发生的是,上述URL仍将获得index.html,然后React Router将根据URL的其余部分对其进行魔术处理,并使用ID = 3加载(使用API调用)客户并显示其订单。 如果我有app_offline.htm文档,索引仍会加载,但是对客户等的API调用将失败(这是预期的)。我想要的是如果存在app_offline文件,则不提供index.html。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。