AngularJS-маршрут не работает, если он вставлен как новый адрес

Я создаю простое приложение 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/home или же localhost/login и все работает.

но когда я использую домашний или логин URL, я получаю ошибку 404.

2 ответа

Решение

Вам нужно подключить сервер для обработки 404 ошибок.

http://localhost/home по запросу браузера ищет домашний путь на вашем сервере или home.html, когда он не найден, вы получаете 404

Когда вы выбираете ссылку в угловом приложении, она загружает index.html (приложение) и направляет в #/home затем повторно обратитесь к /home

Вы можете настроить свой сервер для маршрутизации всего трафика на / и пусть приложение обрабатывает маршрутизацию.

ищите здесь подобное решение. Динамические маршруты AngularJS без хэштега

редактировать

перенаправление 404 в основной индекс Настройка пользовательской страницы ASP 404 с перенаправлением для веб-сайта IIS7

Если вы работаете без веб-сервера, вам нужно будет поставить префикс перед ссылками # знак.

<a href="#/login">

AngularJS маршрутизация без веб-сервера

Другие вопросы по тегам