Angular приложение не загружается с параметрами при перезагрузке с IIS URL Rewrite - PullRequest
1 голос
/ 23 января 2020

В моем локальном IIS настроено приложение Angular 8. Я также установил и настроил IIS URL Rewrite. Проблема в том, что приложение загружается нормально, если я обращаюсь к нему со стартовой страницы. Но если в любой момент я перезагружаю приложение или пытаюсь получить доступ к внутренним страницам, используя URL, я получаю следующую ошибку:

Chrome console log error

Пожалуйста, найдите мою конфигурацию перезаписи URL IIS ниже:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS 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="^/$" negate="true"/>
          </conditions>
          <action type="Rewrite" url="./index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

URL Rewrite in IIS

Это индекс. html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Business Continuity Planning Tool</title>
    <base href="./" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="icon" type="image/x-icon" href="favicon.ico" />
  <link rel="stylesheet" href="styles.6d575a836e8b4e63af3b.css"></head>
  <body>
    <app-root></app-root>
  <script src="runtime-es2015.d3bc0f0c5758d81e0404.js" type="module"></script><script src="polyfills-es2015.f2e75f3c844d6aea9986.js" type="module"></script><script src="runtime-es5.1b294c6bb1a350f5c4a5.js" nomodule></script><script src="polyfills-es5.c56107a30ff96141ff8f.js" nomodule></script><script src="scripts.e84dbffa93eee937834f.js"></script><script src="main-es2015.b4de925263cc98440efd.js" type="module"></script><script src="main-es5.cb2c1b5748b9aef1ff23.js" nomodule></script></body>
</html>

Если я захожу в приложение с домашней страницы, у которой нет параметров URL, она работает нормально. Проблема возникает только на внутренних страницах, где есть параметр. Перезагрузка также работает на домашней странице, так как нет никаких параметров. Route config in angular

URL-адрес домашней страницы: http://localhost: 81 / BcpApp / home ,

URL-адрес внутренней страницы: http://localhost: 81 / BcpApp / editbcp / 5016

Я твердо убежден, что проблема заключается в конфигурации перезаписи URL-адреса IIS, поскольку эти проблемы отсутствуют, когда я запускаю приложение с использованием узла.

1 Ответ

1 голос
/ 23 января 2020
Тег

<base> важен. Он показывает, где находится стартовая часть вашего приложения. попробуйте отрендерить базу как <base href="/BcpApp/" />. при этом все вызовы, такие как <script src="/scripts/myscript.js">, а также angular маршрутизация, должны начинаться с '/ BcpApp /' url part

...