Подкаталог правила перезаписи IIS 8.5 и ReactJ - PullRequest
0 голосов
/ 21 июня 2019

Я изо всех сил пытался понять правила перезаписи в IIS 8.5 и хотел бы получить некоторую помощь. В основном для приложения React мне нужно было бы переписать все URL-адреса для ввода в index.html плюс необязательные параметры запроса.

приложение React должно работать в поддиректоре веб-сервера, так как оно является лишь расширением основного сайта

так, но для ресурсов (папка), статических (папка) и manifest.json (файл) мне не нужно переписывать URL. они упадут в

  • www.some-site.com / каталог / дверной селектор / (папки или файлы, а также index.html)

все маршруты также начинаются здесь, см. 2 примера:

  • www.some-site.com / каталог / двери / двери селекторные
  • www.some-site.com / каталог / селектор дверей / двери / (название двери)

Итак, я придумал следующее: (не работает)

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

1 Ответ

1 голос
/ 21 июня 2019

Вы можете использовать приведенное ниже правило перезаписи 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...