Как проверить файл в подпапке для IIS Rewrite? - PullRequest
0 голосов
/ 24 сентября 2019

Следующее в web.config для перезаписи отлично работает :

<rule name="foo" stopProcessing="true">
  <match url="foo.dat$"/>
  <conditions>
    <!-- Match brotli requests -->
    <add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
  </conditions>
  <action type="Rewrite" url="_compressed_br/foo.dat" />
</rule>

Я хочу добавить условие, чтобы убедиться, что перезапись выполняется только в том случае, если сжатый файл в подпрограммепапка существует:

<rule name="foo" stopProcessing="true">
  <match url="foo.dat$"/>
  <conditions>
    <!-- Match brotli requests -->
    <add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
    <!-- Check if the pre-compressed file exists on the disk -->
    <add input="{DOCUMENT_ROOT}/_compressed_br/foo.dat" matchType="IsFile" negate="false" />
  </conditions>
  <action type="Rewrite" url="_compressed_br/foo.dat" />
</rule>

Переписывание никогда не происходит с условием.Это означает, что проверка всегда возвращает ложь.Я также пробовал следующее для условия безрезультатно:

<add input="{DOCUMENT_ROOT}_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="/_compressed_br/foo.dat" matchType="IsFile" negate="false" />
<add input="_compressed_br/foo.dat" matchType="IsFile" negate="false" />

Не могли бы вы предложить совет по этому вопросу?

Редактировать (2019-09-27): Структура папки:

enter image description here

Каталог веб-приложения foo находится в ... \ dist.URL-адрес для открытия веб-приложения: http://localhost/foo/

...