我创建了一个create-react-app,并尝试发布到生产网站。
我的目标是让所有对/ api / *的调用都通过MVC Server应用程序的控制器。 还提供来自/ content / *和/ static / *
的任何静态文件所有其他调用应该提供1个文件/index.html(这是我的反应文件所在的位置,他们将处理路由。
我正在使用IIS Rewrite模块,我正在尝试使用regexp使用请求的URL“不会使用该模式”。
我当前的IIS设置忽略了“如果模式匹配则不重写”并将所有内容重写为index.html
这是web.config。我不确定我做错了什么。
<rewrite>
<rules>
<rule name="React Rewrite" enabled="true" patternSyntax="ECMAScript">
<match url="(.*)/api/(.*)|(.*)/content/(.*)|(.*)/static/(.*)" negate="true" />
<action type="Rewrite" url="/index.html" />
<conditions>
</conditions>
</rule>
</rules>
</rewrite>
答案 0 :(得分:0)
我已经使用条件解决了这个问题。我的解决方案是:
<rewrite>
<rules>
<rule name="React Rewrite" enabled="true" patternSyntax="ECMAScript">
<match url="(.*)" negate="false" />
<action type="Rewrite" url="/index.html" />
<conditions logicalGrouping="MatchAll">
<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>
</rule>
</rules>
</rewrite>