Правило перезаписи URL не игнорирует запрос файла

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

    <rule name="AngularJS Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />

      </conditions>
      <action type="Rewrite" url="/index.html" />
    </rule>

Выше приведено одно из нескольких правил перезаписи URL-адресов, широко рекомендуемых для угловых одностраничных приложений. Я понимаю, что правило означает: «Если запрос не для физического файла, перепишите URL-адрес в /index.html.

Выдержка из ссылки на документацию выше: «Это можно использовать для указания условия, которое проверяет, является ли запрошенный URL-адрес НЕ файлом ...»

В index.html у меня есть эта ссылка на скрипт:

<script src="lib/jquery/dist/jquery.min.js"></script>

Это физический файл, и он существует на диске в указанном месте.
Правило перезаписи получает этот запрос и перезаписывает его в /index.html.
Почему это происходит? Мой web.config находится на том же уровне, что и wwwroot.

На github есть несколько тем, связанных с перезаписью URL-адресов, не уверен, что эта конкретная проблема решена: https://github.com/aspnet/BasicMiddleware/issues/43 https://github.com/aspnet/IISIntegration/issues/164 https://github.com/aspnet/IISIntegration/issues/192


person Sam    schedule 23.09.2016    source источник


Ответы (1)


IsFile не будет работать, потому что файл находится не там, где его ожидает IIS. Для приложения Asp.Net 4 файл index.html должен был находиться в корне сайта, но для приложения Asp.Net Core файл находится в подкаталоге.

Вместо этого попробуйте использовать новое промежуточное ПО Rewrite, оно знает, где находятся файлы в новом макете Asp.Net Core. https://github.com/aspnet/BasicMiddleware/blob/dev/samples/RewriteSample/Startup.cs#L16

person Tratcher    schedule 23.09.2016
comment
Обновлена ​​ссылка на документацию по промежуточному программному обеспечению перезаписи URL: docs.microsoft.com/en-us/aspnet/core/fundamentals/ - person Tor Haugen; 12.09.2019