带有RequireJS路由的AngularJS会删除哈希

时间:2014-09-20 19:22:22

标签: javascript angularjs routes requirejs http-status-code-404

我正在使用Angular Routes来确定要向用户显示的视图,如下所示:

define(['angular', './app'], function(angular, app) {
    'use strict';
    return angular.module('app', ['ngRoute']).
    config(function($routeProvider, $locationProvider) {
        $routeProvider
            .when('/', {
                templateUrl:'assets/partials/partial1.html',
                controller: 'MyCtrl1'
            }).when('/mada', {
                templateUrl:'assets/partials/partial2.html',
                controller: 'MyCtrl2'
            })
            .otherwise({redirectTo: '/'});

    });

});

目前,路由工作但只是这样:localhost /#/ mada或localhost /#/ 我希望能够看到localhost / mada

我知道添加

$locationProvider.html5Mode(true);

会摆脱哈希。但是这仍然不能使用户转到:localhost / mada,因为它返回服务器404.

这可以实现吗?怎么样?

1 个答案:

答案 0 :(得分:1)

如果您不使用服务器端语言,请将此代码放在html头中。

<base href="/">

喜欢:

<head>
    <base href="/">
</head>

并将其放入配置块:

$locationProvider.html5Mode(true);

如果您使用的是服务器端语言,请使用以下代码:

app.get('*', function(req, res) {
    res.render('index');
});

而不是

app.get('/', function(req, res) {
    res.render('index');
});

并将此代码放在配置块中:

$locationProvider.html5Mode(true);