HTML5 pushState Clash w/Angulaire de l'INTERFACE utilisateur-Routeur Routage d'URL
-
21-12-2019 - |
Question
J'ai un Angular.js webapp qui emploie ui-router (https://github.com/angular-ui/ui-router) w/parallèle vues nommées comme telles:
.state(
'app.experience', {
url: 'e/:experienceId',
views: {
'center-pane@': {
templateUrl: 'partials/experience.html',
controller: 'ExperienceController'
}
})
J'ai activé HTML5 pushState via
$locationProvider.html5Mode(true);
Lorsque
http://www.mysite.com/e/123
est demandé, mon backend renvoie la index.html dans le répertoire racine.(comme par À l'aide de HTML5 pushstate sur angular.js) Toutefois, lorsque le navigateur reçoit index.html et commence à chercher tous les css/js ressources, les demandes sont pour
/e/js/script1.js
par opposition à
/js/script1.js
qui n'existe au niveau de la racine.Il semble que par défaut le répertoire racine de mysite.com/e/
(à partir de l'url demandée) et non pas la racine, mysite.com/
.
Il y a une chose qui me manque ici?Il n'est pas possible d'utiliser relatif croix de saint-andré pour mon javascript et css index.html?
Merci pour votre aide!
La solution
Note:Vous n'avez pas montré votre comment HTML ressemble mais en fonction de votre question, je vais supposer que vous êtes pas l'utilisation d'url relatives partir de la racine du document.
Vous pouvez utiliser des url relatives, mais ils devraient être relatif basé sur la racine du document.
Ainsi, par exemple, vous pourriez avoir quelque chose comme ceci dans votre code html
<img src="images/foo.jpg" />
Vous devriez vraiment faire de cette façon (remarquer l'ajout de début '/' slash)
<img src="/images/foo.jpg" />
Ce n'est pas quelque chose de spécifique à angularjs, html, chose, voir cette réponse pour plus de détails.
La raison pour laquelle votre navigateur à l'aide de la /e/
dans l'url est parce que le le navigateur effectivement demandé une ressource qui a le /e/
dans l'url.Le navigateur ne sait pas que votre serveur a répondu avec un fichier qui n'est pas dans le /e/
répertoire.
Par conséquent, si vous avez une url relative, sans une barre oblique au début, il sera par rapport à la trajectoire ou l'original de la ressource demandée.Ce que vous voulez est d'utiliser des url relatives avec un slash au début.