我一直在努力了解IIS 8.5中的重写规则,并希望获得一些帮助。基本上,对于React应用程序,我需要重写所有网址以在index.html以及可选的queryparams处输入。
React应用只能在Web服务器的子目录中使用,因为它只是主站点的扩展
所以对于资产(文件夹),静态(文件夹)和manifest.json(文件),我不需要它来重写url。这些将属于
所有路线也将从此处开始,请参见2个示例:
所以我想出了以下内容:(不起作用)
<rule name="Door Selector Door" patternSyntax="ExactMatch">
<match url="^catalog/door-selector/.+" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="^~/static/~(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^~/assets/~(.*)" negate="true" />
<add input="{REQUEST_URI}" pattern="^~/manifest.json" negate="true" />
</conditions>
<action type="Rewrite" url="catalog/door-selector/index.html" appendQueryString="true"/>
</rule>
通过简单的重写,没有任何条件,我可以使它正常工作,但我希望仅使用几个规则即可。
注意:我忘记了某些资产来自生产服务器。那就是重写URL的一部分!
最终规则确定于:
<rule name="Door Selector React" enabled="true">
<match url="catalog/door-selector/(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="catalog/door-selector/index.html" appendQueryString="true"/>
</rule>
答案 0 :(得分:1)
您可以使用以下url重写规则:
<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="^(/assets/)" negate="true" />
<add input="{REQUEST_URI}" pattern="^(/static/)" negate="true" />
<add input="{REQUEST_URI}" pattern="manifest.json" negate="true" />
</conditions>
</rule>
注意:如果要匹配应用程序或站点的子目录,可以根据需要设置条件。 或者,您可以共享您的站点文件夹结构,以便我们为您提供更多帮助。
关于, 贾帕(Jalpa)