没有散​​列'#'的AngularJS路由 - 无法使其工作

时间:2016-03-16 16:09:30

标签: javascript angularjs nginx

我已经多次阅读过这篇文章,并且我已按照那里的说明进行操作,但我无法使用此功能。

AngularJS routing without the hash '#'

我有一个Qt应用程序,它向带有#的URL发送请求。该URL被路由到Angular代码。我想改变这个不需要#。

这是我的Angular代码:

$sudo apt-get install blt-dev
$pip install matplotlib

这是我的nginx配置:

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);

});  

在/ projects / larry / web中有一个index.html,它使用$ routeProvider加载JS模块。

当我转到网址时:http://foo.bar.com:8000/#/workitem/12345这很好用。 JS被加载,$ routeProvider获取URL并执行它应该做的事情。

但如果省略#并转到http://foo.bar.com:8000/workitem/12345,则不会加载JS代码并且请求失败。

如何在没有哈希的情况下完成这项工作?

1 个答案:

答案 0 :(得分:3)

您还需要在html页面的<base href="/" />中添加<head>

以下示例。

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

</body>
</html>

修改

这将带您到GitHub帖子的答案。 https://gist.github.com/cjus/b46a243ba610661a7efb