AngularJS маршрутизация без хеша '#' - не может заставить его работать

Я читал этот пост много раз, и я следил за инструкциями, но я не могу заставить это работать.

Угловая маршрутизация без хеша '#'

У меня есть приложение Qt, которое отправляет запрос на URL С# в нем. Этот URL-адрес перенаправляется на код Angular. Я хочу изменить это, чтобы не требовать #.

Это мой код Angular:

angular.module('app').config(function($routeProvider, $locationProvider) {
    $routeProvider

        // route for the home page
        .when('/', {
            templateUrl : 'home.html',
            controller  : 'home'
        })

        // route for the workitem page
        .when('/workitem/:identifier', {
            templateUrl : 'workitem.html',
            controller  : 'workitem'
        });
        $locationProvider.html5Mode(true);

});  

Это моя конфигурация nginx:

server {
        listen 8000;
        server_name foo.bar.com;

        location / {
            include /usr/local/nginx/conf/mime.types;
            root /projects/larry/web;
        }
    }

В/projects/larry/web есть index.html, который загружает модуль JS с помощью $routeProvider.

Когда я перехожу к URL-адресу: http://foo.bar.com:8000/#/workitem/12345, это отлично работает. JS загружается, а $routeProvider получает URL-адрес и делает то, что он должен делать.

Но если я опускаю # и перехожу в http://foo.bar.com:8000/workitem/12345, тогда код JS не загружается и запрос терпит неудачу.

Как я могу сделать эту работу без хеша?

Ответ 1

Вам также нужно добавить <base href="/" /> в <head> вашей html-страницы.

Пример ниже.

<!DOCTYPE html>
<html ng-app="app">
<head>
    <title>My Website</title>
    <base href="/" />
</head>
<body>

</body>
</html>

ИЗМЕНИТЬ

Это приведет вас к сообщению GitHub с ответом. https://gist.github.com/cjus/b46a243ba610661a7efb