是否可以配置IIS(特别是在Azure中)以使用HistoryLocation?

时间:2015-11-18 07:04:59

标签: azure iis reactjs react-router

我有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

1 个答案:

答案 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提供所有内容的假设,您可以在重写规则中更改此文件,以表示您正在提供内容的文件。