/ / AngularJS $ routeProvider не може завантажуватися безпосередньо до часткового - javascript, angularjs, apache, angularjs-route

AngularJS $ routeProvider не може завантажувати безпосередньо до часткового - javascript, angularjs, apache, angularjs-routing

У хвилину я зараз використовую $ routeProvider для динамічного завантаження розділів сторінки так:

$routeProvider
.when("/", {
templateUrl: "/pages/home.html",
controller: "mainController"
})
.when("/our-business", {
templateUrl: "/pages/our-business.html",
controller: "businessController",
css: "css/_business.css"
})
.when("/solutions", {
templateUrl: "/pages/solutions.html",
controller: "solutionsController"
});

В даний час, якщо я переходжу безпосередньо до індексу (localhost), а потім виберіть "Наш бізнес" у меню навігації, тоді Angular обробляє запит про місцезнаходження, і сторінка завантажується прекрасно, URL-адреса змінюється на localhost / наш-бізнес. Якщо потім перезавантажую або відкриваю цю URL-адресу безпосередньо, я отримую помилку 404 - імовірно, тому, що Apache намагається відкрити наш-business.html, який не існує. Якщо я відкрию localhost / # / наш бізнес то індекс завантажується і кутовий, то обробляєзапит. У мене виникла проблема в тому, що це розроблено для публічного веб-сайту, тому якщо користувач повинен скопіювати та вставити URL-адресу чи поділитися нею електронною поштою, він отримає помилку 404.

Чи є спосіб, щоб Apache переписав URL-адреси для їх розбору через індекс та AngularJS, щоб ми могли зберігати не-хеш-стиль, але все-таки мати функціональні URL-адреси?

Відповіді:

1 для відповіді № 1

Як сказав Кайлаш, ви можете встановити locationProvider в режим html5

$locationProvider.html5Mode(true)

коли ви завантажуєте свій кутовий додаток.

Тоді ви повинні сказати своєму серверу Apache надіслати index.html (точку входу для однієї сторінки програми) для будь-якого запитуваного URL-адреси.

Потім кутовий маршрутизатор буде обробляти правильний маршрут


-1 для відповіді № 2

Ні. Зміна URL-адреси без хешу перезавантажує всю сторінку.

Весь сенс цього $routeProvider полягає у створенні односторінкової програми з декількома поданнями.

В основному, наявність # в url - це єдиний спосіб це зробити. Зміни в хеші URL-адреси не призводять до перезавантаження сторінки та дозволяють Angular завантажувати відповідні подання.