pourquoi la balise de base ne fonctionne pas pour les chemins relatifs?

J'ai une balise de BASE comme ci-dessous dans la section head de la page:

<base href="http://localhost/framework">

Et un script comme ci-dessous qui est relatif (bien sûr après la balise de base):

<script src="/assets/jquery-1.7.1.min.js">

Mais quand j'ouvre jQuery à partir de firebug, il montre:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body> 
Blah Blah Blah....

Quand j'utilise le lien ci-dessous, c'est OK:

<script src="http://localhost/framework/assets/jquery-1.7.1.min.js">  

J'ai cherché la réponse partout, mais il semble que je fais bien mon travail! Quel est donc le problème?

37
demandé sur ALH 2012-07-17 14:53:43

2 réponses

/assets/jquery-1.7.1.min.js n'est pas relatif mais absolu*, le / le prend à la racine même avec une balise base.

Si vous supprimez ce /, il devrait le rendre relatif du chemin actuel, ce qui, lorsqu'une balise base est présente, serait http://localhost/framework/.

Vous devrez également ajouter un / à la fin du href, pour indiquer qu'il s'agit d'un dossier.

Exemple de travail complet:

<!doctype html>
<html>
<head>
<base href="/test/" />
<script src="assets/test.js"></script>
<body>
hi
</body>
</html>

* en fait, en fonction de qui vous demandez, c'est toujours relatif car il est relatif domaine actuel. Mais je préfère appeler cela absolu car cela signifie que le chemin est à partir de la racine, en fonction du domaine actuel. Bien que, techniquement, je suppose que cela le rend relatif dans le grand schéma des choses, et absolu seulement en termes de domaine actuel. Quoi.

78
répondu Rudi Visser 2012-07-17 11:06:13

Essayez d'avoir votre balise de base comme:

<base href="http://localhost/framework/">

Et votre balise de script comme:

<script src="assets/jquery-1.7.1.min.js">
11
répondu techfoobar 2012-07-17 10:59:24