我有React应用程序,最终使用webpack构建。我们托管了一个这个应用程序在Azure上讨论的API,并希望在其上托管构建在其上的UI。
第一次点击URL并导航时,所有历史位置的内容都有效。但是,当我们刷新页面时,会收到404错误(如果IIS正在提供此错误,则会出现这种错误。)
是否可以配置Azure来处理这类事情?我们应该放弃这种类型的应用程序并托管webpack vm吗?
类似的问题:
Reactjs HistoryLocation get 404 on refresh
React-router urls don't work when refreshing or writting manually
答案 0 :(得分:4)
如果能够正确理解您的问题和情况,解决方案是将所有请求重定向到您唯一的HTML页面(假设为index.html)。 这可以通过IIS的URL rewrite module来实现。
默认情况下,任何Azure Web App都会在其名为web.config
的Web根文件夹中包含一个文件。这是标准的XML文件。用喜欢的编辑器打开它,找到<system.webserver>
部分。然后在里面放置以下附加部分。请注意,<rewrite>
元素应该是<system.webserver>
one的直接后代:
<rewrite>
<rules>
<rule name="Rewrite to index.html">
<match url=".*" />
<action type="Rewrite" url="index.html" />
</rule>
</rules>
</rewrite>
同样,基于您从index.html
提供所有内容的假设,您可以在重写规则中更改此文件,以表示您正在提供内容的文件。