IIS 8.5重写规则子目录和ReactJs

vuktfyat  于 2023-02-03  发布在  React
关注(0)|答案(2)|浏览(143)

我一直在努力理解IIS 8. 5中的重写规则,希望得到一些帮助。基本上对于React应用程序,我需要重写所有的url以在indexiderhtml加上可选的queryparams中输入。
React应用程序必须存在于Web服务器的子目录中,因为它只是主站点的一个扩展
因此,除了资产(文件夹)、静态(文件夹)和manifest.json(文件)之外,我不需要它来重写URL。这些将落入

  • (文件夹或文件以及index.html)

所有路由也将从这里开始,参见2个示例:

  • www.some-site.com/catalog/door-selector/doors
  • (门的名称)

所以我想出了以下的方法:* (不起作用)*

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

通过一个简单的重写和没有条件的条件,我可以让它工作,但我更愿意只使用几个规则。
注意:我忘记了某些资产是来自生产服务器的。2而那是在重写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>
fae0ux8s

fae0ux8s1#

您可以使用以下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

628mspwn

628mspwn2#

你可以在web.config文件中使用下面的URL重定向

ile
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" 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="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                </conditions>
                <action type="Rewrite" url="/IIS folder path/index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

这将添加新的IIS重定向规则

相关问题