diff --git a/src/ng/location.js b/src/ng/location.js index 7b011abe9b57..fb4a5f8aa97b 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -496,12 +496,12 @@ function $LocationProvider(){ function( $rootScope, $browser, $sniffer, $rootElement) { var $location, LocationMode, - baseHref = $browser.baseHref(), + baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to '' initialUrl = $browser.url(), appBase; if (html5Mode) { - appBase = baseHref ? serverBase(initialUrl) + baseHref : initialUrl; + appBase = serverBase(initialUrl) + (baseHref || '/'); LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url; } else { appBase = stripHash(initialUrl); diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js index ee920ed93e67..f8ee81edbb1f 100644 --- a/test/ng/locationSpec.js +++ b/test/ng/locationSpec.js @@ -635,6 +635,19 @@ describe('$location', function() { } ); }); + + + it('should set appBase to serverBase if base[href] is missing', function() { + initService(true, '!', true); + inject( + initBrowser('http://domain.com/my/view1#anchor1', ''), + function($rootScope, $location, $browser) { + expect($browser.url()).toBe('http://domain.com/my/view1#anchor1'); + expect($location.path()).toBe('/my/view1'); + expect($location.hash()).toBe('anchor1'); + } + ); + }); });