Mam działającą aplikację AngularJS (1.3.8), która jest wdrażana jako aplikacja internetowa w Tomcat w aplikacji kontekstowej aplikacji.
URL wyglądać tak:
https://www.myserver.com/app/#/login
https://www.myserver.com/app/#/register
itd. Trasy są zdefiniowane następująco:
$routeProvider.when(
'login',
{templateUrl: 'partials/login.html?' + now, controller: 'LoginController'}
);
$routeProvider.when(
'register',
{templateUrl: 'partials/register.html?' + now, controller: 'RegistrationController'}
);
$routeProvider.otherwise(
{redirectTo: 'login'}
);
Wszystko działa bez zarzutu. Teraz muszę usunąć hashbang z adresów URL i użyć trybu $ 5 lokalizacji HTML5. Do tej pory nie mogę tego zrobić.
Moim założeniem było to, że wystarczy zadzwonić
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
a teraz URL app zmienić
https://www.myserver.com/app/login
https://www.myserver.com/app/register
to nie działa. Kiedy żądać adresu URL
https://www.myserver.com/app
kątowe przekierowań do
https://www.myserver.com/login
Ogólnie rzecz biorąc, cały routing i zasobów ładowania jest uszkodzony z tej zmiany. Na przykład nie można rozwiązać adresów URL stron częściowych w definicjach routingu. Działają tylko wtedy, gdy dodaję przedrostek "/ app /".
Próbowałem użyć tagu bazowy, zmieniając wezwanie $ locationProvider do
$locationProvider.html5Mode({
enabled: true
});
i korzystania
<base href="/app">
Co ciekawe, to nie ma znaczenia. Mimo to wprowadzenie https://www.myserver.com/app prowadzi do przekierowania AngularJS do https://www.myserver.com/login. Adres URL https://www.myserver.com/app/login jest niedostępny.
ten sposób używam tag Base:
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<link href="css/mycss" rel="stylesheet" type="text/css">
...
<script src="js/my.js"></script>
<base href="/app">
</head>
<body class="ng-cloak">
<ng-view></ng-view>
</body>
</html>
ja też encounterd inne problemy. Na przykład, jeśli mogę zmienić lokalizację znacznika bazowej w pliku HTML, takich jak to:
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<base href="/app">
<link href="css/mycss" rel="stylesheet" type="text/css">
...
<script src="js/my.js"></script>
</head>
<body class="ng-cloak">
<ng-view></ng-view>
</body>
</html>
nagle JS i pliki CSS nie może być rozwiązany bardziej podczas obciążenia.
Czy ktoś może wyjaśnić, co robię źle?
Gdzie można ustawić znacznik bazy? Czy ten tag podstawowy powinien być ustawiony w metodzie $ locationProvider.html5Mode()? Podaj przykład, jak i gdzie należy to ustawić. – dionysus
tag podstawowy pojawi się w znaczniku 'head' i' $ locationProvider.html5Mode() 'wewnątrz' aplikacji.config' phase –
Pankaj, co jeśli pliki produkcyjne znajdują się pod myserver/MyProject/podczas gdy MyProject będzie folderem głównym, więc w tym scenariuszu musimy ręcznie edytować index.html Base Href po wdrożeniu. Również powyższe rozwiązanie nie działa podczas programowania na lokalnym serwerze. –