AngularJS HTML5 Mode - Как прямые ссылки работают без специфичных для сервера изменений?

Примечание. Этот вопрос также может гласить:

Как поддерживать создание закладок на стороне клиента в Java на платформе mvc без хэш-банга.

Я перехожу угловое приложение, которое используетhashtags к тому, ктоhtml5mode, Я успешно установил

$locationProvider.html5Mode(true);

И все ссылки с целевой страницы (index.html) работают нормально.

Проблема в том, что, если на частичные URL обращаются напрямую, я получаю 404, естественно, поскольку определения конечной точки сервера не связаны с определенными на стороне клиента маршрутами.

Таким образом, без HTML5 мы получаем не-SEO-дружественные хэш-банги, но с его помощью мы не можем пометить ничего, кроме целевой страницы (страницы, которая загружается под углом).

Почему это работает, если сначала запрашивается целевая страница по умолчанию (index.html), т.е. htpp: //mydomain.com/:

Браузер запрашивает index.html с сервераСервер возвращает index.html, а браузер загружает угловой фреймворкИзменения URL-адреса отправляются на маршрутизатор на стороне клиента, и загружаются соответствующие пароли.

Почему это не работает, если (то есть)http://mydomain.com/foo запрашивается прямо из браузера:

Браузер запрашивает mydomain / foo с сервера.Ресурс не существуетСервер возвращает 404

Чего-то не хватает в этой истории, я просто не знаю что. Вот только два ответа, которые я вижу ...

Это по замыслу. Это как это должно работать? Эти пользователи должны всегда попадать на страницу начальной загрузки клиентского MVC-фреймворка (обычно index.html), а затем переходить оттуда. Это не идеально, потому что состояние не может быть сохранено и нет возможности сделать закладку ... не говоря уже о сканировании.Серверное решение. Это работает с серверной уловкой? Например, для всех запросов верните index.html и немедленно вызовите маршрутизатор с дополнительным контекстом. Если это так, то это противоречит цели, заключающейся в том, что AngularJS полностью на стороне клиента и выглядит хаком.

Ответы на вопрос(3)

Ваш ответ на вопрос