J'ai une application simple avec un composant qui attend certains paramètres de l'URL. il n'y a qu'un seul itinéraire dans l'application:
const appRoutes: Routes =
path: 'hero/:userId/:languageId',component: HeroWidgetComponent }];
Dans l'index.html, j'ai ceci dans l'en-tête <base href="/">
J'utilise Webpack et l'application fonctionne correctement dans un environnement de développement, lorsque vous parcourez l'URL: http://localhost:4000/hero/1/1
.
Cependant, lors de la création de l'application pour la production et de l'obtention des fichiers de distribution, puis de l'hébergement sur IIS. J'obtiens l'erreur suivante en essayant de parcourir la même URL:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
L'application fonctionne correctement si je supprime tout le routage et navigue simplement: http:localhost:4200
sur IIS.
Nous devons faire en sorte que IIS retombe dans index.html en ajoutant une règle de réécriture.
Étape 1: Installez IIS URL Rewrite} _ Module
Étape 2: Ajoutez une règle de réécriture à web.config.
<?xml version="1.0" encoding="utf-8"?>
<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" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Si vous utilisez une application IIS telle que myApp
sous votre site Web par défaut (l'URL de votre application doit avoir la syntaxe http: // localhost/myApp/my-angular-route ), puis vous devrait essayer de modifier l'action pour
<action type="Rewrite" url="/myApp/"/>;
Ensuite, cela fonctionne pour mon environnement sans aucun problème.
Vous trouverez des instructions étape par étape ici: https://blogs.msdn.Microsoft.com/premier_developer/2017/06/14/tips-for-running-an-angular-app-in-iis/