Angular 2 Hosted on IIS: HTTP Error 404
We have to make IIS fall back to index.html by adding a rewrite rule.
Step 1: Install IIS URL Rewrite Module
Step 2: Add a rewrite rule to 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>
STEP 3: add web.config link to angular.json: (because after ng build it will skipped)
"architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { .......... "assets": [ "src/favicon.ico", "src/assets", **"src/web.config"** ]
If you are using an IIS application like myApp
below your default web site (then the URL to your application should have the syntax http://localhost/myApp/my-angular-route), then you should try to modify the action to
<action type="Rewrite" url="/myApp/"/>;
Then it works for my environment without any problems.
Step by step instructions can be found here:https://blogs.msdn.microsoft.com/premier_developer/2017/06/14/tips-for-running-an-angular-app-in-iis/