문제 설명
html5 모드를 사용하여 Angular 다시 로드 (Reload Angular using html5 mode)
Angular.js에서 # using html5 모드를 끄고 grunt와 node를 dev 서버로 사용하고 있지만 다시 로드하고 새로 고침하면 404로 돌아옵니다.
노드 서버를 어떻게 활성화합니까? Grunt에서 페이지 새로고침을 하시겠습니까?
참조 솔루션
방법 1:
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.
(by ottz0、Guido Flohr)