5568 sujets

Sémantique web et HTML

Bonsoir à tous Smiley smile

J'ai un petit problème concernant la balise <base />

J'avais choisi cette méthode comme solution aux problèmes des liens relatifs par rapport à des répertoires inexistants avec l'URL Rewriting, parce que je ne voulais pas être obligé de tout mettre à la racine (solution d'openweb par exemple), ou tout indiquer depuis la racine.

Malheureusement, ça marche pas trop.

J'ai un bout de script PHP qui génère l'adresse complète dans <base /> suivant celle qu'à utilisé le visteur, et ça marche très bien, mais en fait, j'ai l'impression que ça ne considère pas l'adresse indiquée comme base pour tout.

Un <img src="/image.jpg" /> qui marche très bien montre que mon <base /> est correct, mais quand je link mes feuilles de style, "/" n'est plus considéré comme la racine spécifiée par <base /> mais celle par défaut, et ils ne sont donc pas correctement linkés.

Comment résoudre ce problème ?
Merci d'avance Smiley cligne
Modifié le 12 Dec 2004 - 19:25
Peut-être pas d'une très grande aide, mais as tu jeter un oeil à La résolution des URI relatifs, moi j'y comprend pas grand chose mais ils disent:
a écrit :
Remarque : Pour les versions de HTTP qui définissent un en-tête « Link », les agents utilisateurs devraient prendre en compte ces en-têtes exactement comme les éléments LINK dans le document. Le protocole HTTP 1.1, tel que défini par le document [RFC2616], ne comprend pas de champs d'en-tête « Link » (voir la section 19.6.3).
Igor a écrit :
Peut-être pas d'une très grande aide, mais as tu jeter un oeil à La résolution des URI relatifs, moi j'y comprend pas grand chose mais ils disent:
Remarque : Pour les versions de HTTP qui définissent un en-tête « Link », les agents utilisateurs devraient prendre en compte ces en-têtes exactement comme les éléments LINK dans le document. Le protocole HTTP 1.1, tel que défini par le document [RFC2616], ne comprend pas de champs d'en-tête « Link » (voir la section 19.6.3).
Je comprends pas grand chose non plus. Si quelqu'un voudrais faire une traduction qu'il n'hésite pas Smiley lol

Et au passage, il y a aussi
<script type="text/javascript" src="/js/nicetitle.js"></script>
qui n'est pas linké correctement.

Enfin vu que j'ai tout fait correctement ça m'étonnerais qu'il existe une solution avec <base />, mais dans ce cas-là je voudrais savoir quelles sont les limitations.

En tous cas, dans mon cas, si ça ne marche pas "seulement" pour les <link> et <script> je peux résoudre ça en faisant un lien absolu avec PHP.
Mais si je me lance dans ça et que je m'apperçois que quasiment toutes les balises ne marchent pas comme ça... Je préfère éviter Smiley lol
Et me tourner directement vers les autres solutions (qui seront moins pratiques dans mon cas).

En tous cas merci Smiley cligne
Il n'y a aucune incompatibilité entre <base>, <link> et <style>, ou encore <script>. Mais il y a une petite erreur toute simple qu'on commet souvent: l'élément <base> doit précéder tous les liens.

Autrement dit, la CSS ne sera pas atteignable avec :
<link href="blabla.css" ... >
<base href="http://example.org/ici/">


Mais elle sera correctement trouvé avec:
<base href="http://example.org/ici/">
<link href="blabla.css" ... >


Est-ce que ce ne serait pas la source du problème ici ?

Sinon, pour la remarque de la spécification HTML4.01 citée par Igor sur la résolution des URI relatifs : elle concerne un tout autre problème, qui est celui de l'en-tête HTTP link défini par la norme HTTP1.0 et qui a disparu de HTTP1.1.
Pour la petite histoire, cet en-tête link permettait en particulier de lier une feuille de style à un document HTML directement au niveau HTTP (Tout comme on procède aujourd'hui pour définir le type de contenu, la langue du document, etc).
Modifié le 12 Dec 2004 - 06:53
Je comprends plus rien...
Maintenant j'ai
<base href="http://localhost/elentar/" />
[...]
<img src="/images/avatar.jpg" alt="Avatar" />
Et... même l'image ne marche plus !
Pourtant <base /> est entre <head> et </head> (et elle était déjà avant tous les liens, j'avais pensé à ce problème avant de poster) et l'image est située dans http://localhost/elentar/images/avatar.jpg

Là, ça cherche dans http://localhost/images/avatar.jpg et bien sûr, ça échoue.

Vriament bizarre... Je crois que je vais laisser tomber et être obligé de tout mettre à la racine.
Ca ne pose pas tant de problèmes, et ça m'évitera beaucoup de casses-têtes je crois Smiley cligne
Merci quand même.
C'était ça !
J'avais mélangé les deux techniques en fait Smiley lol ... j'ai honte Smiley langue

Merci énormément.
Je vais conserver ce système de <base /> jusqu'à la mise en ligne, où tout mettre à la racine ne posera aucun problème.