React MVC App的IIS重写条件

时间:2018-04-01 01:39:19

标签: reactjs iis url-rewriting

我创建了一个create-react-app,并尝试发布到生产网站。

我的目标是让所有对/ api / *的调用都通过MVC Server应用程序的控制器。 还提供来自/ content / *和/ static / *

的任何静态文件

所有其他调用应该提供1个文件/index.html(这是我的反应文件所在的位置,他们将处理路由。

我正在使用IIS Rewrite模块,我正在尝试使用regexp使用请求的URL“不会使用该模式”。

我当前的IIS设置忽略了“如果模式匹配则不重写”并将所有内容重写为index.html

这是IIS设置: enter image description here

这是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>

1 个答案:

答案 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>