/ / AngularJS $ routeProvider не може да се зарежда директно към частично - javascript, angularjs, apache, angularjs-routing

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 / # / нашия бизнес след това индексът се зарежда и Angular след това обработвазапитването. Въпросът, който имам, е, че той е създаден да бъде публичен уебсайт, така че ако потребителят копира и постави URL адреса или го сподели по имейл, те ще получат 404 грешка.

Има ли някакъв начин да пренапишем URL адресите на Apache, за да ги анализираме чрез индекса и AngularJS, така че да можем да запазим не-хеш стила, но все още да имаме функционални URL адреси?

Отговори:

1 за отговор № 1

Както казах Kailash можете да настроите locationProvider на html5 режим

$locationProvider.html5Mode(true)

когато зареждате своето ъглово приложение.

След това трябва да кажете на вашия Apache сървър да изпрати index.html (входна точка на вашето приложение за единична страница) за всеки поискан URL адрес.

След това ъгловият рутер ще се справи с правилния маршрут


-1 за отговор № 2

Не. Промяната на URL адреса без хеш-презарежда цялата страница.

Целият смисъл на това $routeProvider е да се изгради приложение с една страница с множество изгледи.

По принцип, като # в url е единственият начин да направите това. Промените в URL адреса на "hash don" не водят до презареждане на страницата и позволяват на Angular да зареди съответните изгледи.