From 6bfd69bfb596eaf9df6726b93eb2436804fad9ad Mon Sep 17 00:00:00 2001 From: Ethan Blackwelder Date: Fri, 16 Feb 2018 16:51:34 -0500 Subject: [PATCH] Adding --history-api-fallback CLI option to `ng serve` --- docs/documentation/serve.md | 10 ++++++++++ packages/@angular/cli/commands/serve.ts | 7 +++++++ packages/@angular/cli/tasks/serve.ts | 4 ++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/documentation/serve.md b/docs/documentation/serve.md index 65de3edb8b0b..ae499467e1d8 100644 --- a/docs/documentation/serve.md +++ b/docs/documentation/serve.md @@ -58,6 +58,16 @@ All the build Options are available in serve, below are the additional options.

+
+ history-api-fallback +

+ --history-api-fallback default value: true +

+

+ Serves the index page instead of HTTP 404 "Not Found" errors (but only when the `Accept` HTTP header includes "html" content-types). +

+
+
open

diff --git a/packages/@angular/cli/commands/serve.ts b/packages/@angular/cli/commands/serve.ts index d059571e5644..8746146613b8 100644 --- a/packages/@angular/cli/commands/serve.ts +++ b/packages/@angular/cli/commands/serve.ts @@ -21,6 +21,7 @@ export interface ServeTaskOptions extends BuildOptions { liveReload?: boolean; publicHost?: string; disableHostCheck?: boolean; + historyApiFallback?: boolean; ssl?: boolean; sslKey?: string; sslCert?: string; @@ -97,6 +98,12 @@ export const baseServeCommandOptions: any = overrideOptions([ default: false, description: 'Don\'t verify connected clients are part of allowed hosts.', }, + { + name: 'history-api-fallback', + type: Boolean, + default: true, + description: 'Serves the index page instead of HTTP 404 "Not Found" errors', + }, { name: 'serve-path', type: String, diff --git a/packages/@angular/cli/tasks/serve.ts b/packages/@angular/cli/tasks/serve.ts index 1224a8528ad5..08208af6a7e4 100644 --- a/packages/@angular/cli/tasks/serve.ts +++ b/packages/@angular/cli/tasks/serve.ts @@ -211,11 +211,11 @@ export default Task.extend({ } const webpackDevServerConfiguration: IWebpackDevServerConfigurationOptions = { headers: { 'Access-Control-Allow-Origin': '*' }, - historyApiFallback: { + historyApiFallback: !!serveTaskOptions.historyApiFallback ? { index: `${servePath}/${appConfig.index}`, disableDotRule: true, htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'] - }, + } : false, stats: serveTaskOptions.verbose ? statsConfig : 'none', inline: true, proxy: proxyConfig,