如果将AngularJS路由作为新地址插入,则该路由不起作用

时间:2015-01-16 19:56:33

标签: angularjs angularjs-routing

我创建了一个简单的angularjs应用程序。

这是我的配置:

app.config(function ($routeProvider, $locationProvider)
{
    $routeProvider.when("/home", {
        controller: "homeController",
        templateUrl: "/views/home.html"
    });
    $routeProvider.when("/login", {
        controller: "loginController",
        templateUrl: "/views/login.html"
    });
    $routeProvider.otherwise({ redirectTo: "/home" }); // or notfound.html
    $locationProvider.html5Mode(true);
});

并在我的index.html

<base href="/">

当我从index.html(localhost / index.html)文件启动网站时,一切都很好。网址更改为localhost/homelocalhost/login,并且每个工作都有效。

但是当我使用主页登录网址时,我收到404错误。

2 个答案:

答案 0 :(得分:1)

您需要让服务器参与处理404错误。

浏览器询问时,

http://localhost/home查找服务器或home.html上的主路径,但未找到404

当您在角度应用中选择一个链接时,它会加载index.html(应用)并路由到#/home,然后将其重新发送到/home

您可以将服务器设置为将所有流量路由到/,然后让应用处理路由。

在这里寻找类似的解决方案。 AngularJS Dynamic Routes Without Hashtag

修改

将404重定向到主索引Configuring custom ASP 404 page with redirect for IIS7 website

答案 1 :(得分:1)

如果您在没有网络服务器的情况下运行,则需要在链接前加#号。

<a href="#/login">

AngularJS routing without a web server