I've turned off my # using html5 mode in Angular.js and am using grunt and node as a dev server however reload and refresh come back as 404.
How do you enable the node server in Grunt to do page reloads?
I've turned off my # using html5 mode in Angular.js and am using grunt and node as a dev server however reload and refresh come back as 404.
How do you enable the node server in Grunt to do page reloads?
Say your application entry point is http://localhost/app/. You enter this page into the browser's address bar, the browser sends a request, the server finds the file app/index.html in its document root and returns it. Now the browser finds some script tags in that document, requests the scripts from the server and executes them. Your application is working.
At one point angular-route jumps in and starts manipulating the browser's address bar. At one point it may display http://localhost/app/shop/order there. Now you hit reload. What happens? Just read this answer from the beginning but with the modified URI:
... the server does not find the file app/shop/order/index.html and responds with a 404.
You cannot get rid of the hash sign without configuring the server. From https://docs.angularjs.org/guide/$location:
Server side
Using this mode requires URL rewriting on server side, basically you have to rewrite all your links to entry point of your application (e.g. index.html). Requiring a
<base>tag is also important for this case, as it allows Angular to differentiate between the part of the url that is the application base and the path that should be handled by the application.
How should the server know that /app/shop/order is essentially a request for /app but /app/app.js or /app/partials/overView.html are requests for real files? You have to configure the server for that and you often have to restructure your application.