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

AngularJS route doesn't work if its inserted as new address

我创建了一个简单的 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) 文件启动网站时,一切都很好。 url 更改为 localhost/homelocalhost/login 一切正常。

但是当我使用 homelogin url 时,我收到 404 错误。

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

http://localhost/home 当浏览器询问时查找您服务器上的主路径或 home.html 当找不到时您得到 404

当您在 angular 应用程序中 select 一个 link 时,它将加载 index.html(应用程序)并路由到 #/home 然后重新寻址至 /home

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

在此处查找类似的解决方案。 AngularJS Dynamic Routes Without Hashtag

编辑

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

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

<a href="#/login">

AngularJS routing without a web server