IIS推送状态认为我的所有反应路由都是静态文件

时间:2016-01-06 20:49:14

标签: iis reactjs react-router pushstate

我试图通过关注这两个帖子来设置我的IIS以支持推送状态。 Configure IIS server to work with Aurelia framework and push state

https://gist.github.com/jdmonty/8e579b3b7c19ad80b78a

但是每当我尝试访问像localhost / app / myroute这样的路由时,IIS认为myroute是一个静态文件,IIS返回404

Module  IIS Web Core
Notification    MapRequestHandler
Handler StaticFile

我在我的网站中发现Handler Mappings是一个静态文件处理程序,其规则为*,我想这是处理我的请求,因为它没有扩展名。我尝试删除规则并尝试将规则编辑为*.*以强制扩展,但似乎都不起作用。这是我目前的网络配置重写规则

<rule name="Main Rule" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
           <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
           <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
           <add input="api.*" negate="true" />
       </conditions>
       <action type="Rewrite" url="/app/" />
 </rule>

1 个答案:

答案 0 :(得分:0)

我使用反应路由器中的useBaseName和index.html文件中的<base href="/app">组合解决了这个问题。

看到发生的事情是我的index.html中的所有静态资源都是没有设置<base href>的问题,导致规则触发而没有给我正确的资源。