Я отключил свой #, используя html5-режим в Angular.js, и использую grunt и узел как dev-сервер, однако перезагрузка и обновление возвращаются как 404.
Как включить сервер узлов в Grunt для перезагрузки страниц?
Предположим, что ваша точка входа в приложение - http://localhost/app/. Вы вводите эту страницу в адресную строку браузера, браузер отправляет запрос, сервер находит файл app/index.html в своем корневом каталоге документа и возвращает его. Теперь браузер находит теги сценариев в этом документе, запрашивает сценарии с сервера и выполняет их. Ваше приложение работает.
В какой-то момент угловой маршрут перескакивает и начинает манипулировать адресной строкой браузера. В какой-то момент он может отображать http://localhost/app/shop/order there. Теперь вы нажмете перезагрузку. Что происходит? Просто прочитайте этот ответ с самого начала, но с измененным URI:
... сервер не находит файл app/shop/order/index.html и отвечает 404.
Вы не можете избавиться от символа хэша без настройки сервера. Из https://docs.angularjs.org/guide/ $ location:
Серверная сторона
Использование этого режима требует перезаписи URL-адресов на стороне сервера, в основном вы должны переписать все свои ссылки на точку входа вашего приложения (например, index.html). Требование
<base>
также важно для этого случая, так как позволяет Angular различать часть URL-адреса, которая является базой приложения, и путь, который должен обрабатывать приложение.
Как сервер должен знать, что /app/shop/order является по существу запросом для /app, но /app/app.js или /app/partials/overView.html - это запросы на реальные файлы? Для этого вам нужно настроить сервер, и вам часто приходится реструктурировать приложение.