NgRoute задает базовый url для всех маршрутов
Можно ли добавить базовый url для всех маршрутов в приложении AngularJS? По существу, изменение его местоположения на сервере (вроде, если это имеет смысл... поэтому он будет доступен не через '/', а через '/something/').
Чтобы добавить некоторый контекст, я пытаюсь разместить существующее приложение Angular за некоторой аутентификацией, так что теперь приложение будет доступно по адресу say http://mysite/secure
после успешного входа в систему.
Проблема в том, что если я должен загрузить приложение в http://mysite/secure
, он отлично работает (сервер, очевидно, будет обслуживать правильную страницу), но нажатие любой ссылки приведет к перезагрузке страницы и переходу на http://mysite/#newpage
вместо http://mysite/secure/#newpage
.
Без добавления/защиты/ко всем маршрутам и элементу ссылки это возможно? Привет, извините, если это не хорошо сказано.
Ответы
Ответ 1
Может быть полезно установить тег <base>
HTML5. Из документации здесь:
Относительные ссылки
Обязательно проверьте все относительные ссылки, изображения, скрипты и т.д. Вы должны указать базу url в заголовке основного html файла (<base href="/my-base">
), или вы должны использовать абсолютные URL-адреса (начиная с /) всюду, потому что относительный URL-адреса будут разрешены к абсолютным URL-адресам, используя исходный абсолютный URL-адрес документа, который часто отличается от корня приложения.
Запуск приложений Angular с API истории, включенным из корневого каталога документа, настоятельно рекомендуется, поскольку он заботится обо всех проблемах с относительной связью.
Ответ 2
Место для базового href должно иметь трейлинг /. Например:
<base href="location" />
не будет работать. Он должен быть в этом формате:
<base href="location/" />