ngRoute set base url for all routes
AngularjsAngularjs Problem Overview
Is it possible to add a base url to all routes in an AngularJS app? Essentially changing its location on the server (kind of, if that makes sense... so it would be accessed not via /
but via /something/
).
To add some context, I am trying to place an existing Angular app behind some authentication such that the app would now be accessed at address say http://mysite/secure
after successful login.
The problem is if I was to load the app at http://mysite/secure
it works fine (the server will obviously serve up the correct page), but clicking any link would result in a page reload and route to http://mysite/#newpage
instead of http://mysite/secure/#newpage
.
Without adding /secure/
to all of the routes and link element is this possible? Cheers, sorry if that is not worded well.
Angularjs Solutions
Solution 1 - Angularjs
The location for the base href must have trailing /. For example:
<base href="location" />
will not work. It must be in this format:
<base href="location/" />
Solution 2 - Angularjs
Setting the <base>
HTML5 tag might help. From the documentation here:
> Relative links
>
> Be sure to check all relative links, images, scripts etc. You must either specify the url base in the head of your main html file (<base href="/my-base">
) or you must use absolute urls (starting with /) everywhere because relative urls will be resolved to absolute urls using the initial absolute url of the document, which is often different from the root of the application.
>
> Running Angular apps with the History API enabled from document root is strongly encouraged as it takes care of all relative link issues.