Submitted by nyl auster on
Bonjour à tous
Je suis en train d'activer les urls simplifiées (suppresion du ?q=). Je pensais que c'était une tache mineur mais malheureusement je me rends compte que beaucoup de mes liens ne fonctionne plus si je n'ajoute pas
<?php
echo base_path()
?>
devant. Je ne comprends pas pourquoi et ça m'oblige à rester tous les liens du site un par un...
Comment se fesse que ça fasse ça? Pourquoi mes chemins relatifs à index.php semblent endommagés? et pourquoi pas tout le temps? par exemple j'inclus un un plugin jquery en début de page : il marche très bien sur les pages avec alias et ne s'inclut pas correctement sur les pages qui n'ont pas encore d'alias. Je ne pige pas...
Sans clean-urls, la page
Permalien Soumis par Damien Tournoud le 5 Juin, 2009 - 10:29
Sans clean-urls, la page courante est "/?q=node/2", c'est à dire "/", avec pour option "q=node/2". Les liens relatifs présents dans la page sont donc relatifs à "/".
Avec clean-urls, la page courante est "/node/2". Les liens relatifs présents dans la page le sont donc par rapport à "/node".
En outre, si tu écris "/node/2/" au lieu de "/node/2", les liens deviennent relatifs à "/node/2".
Cela explique pour Drupal émet toujours des URLs remontant jusqu'à la racine du site.
Merci pour la réponse
Permalien Soumis par nyl auster le 5 Juin, 2009 - 11:04
Merci pour la réponse rapide !
Je ne saisis pas très bien : physiquement mes liens se trouvent toujours dans la page index.php à la racine du site puisque c'est là que tout se passe dans drupal. Comment l'url affichée peut-elle modifier cette logique? Drupal intervient-il quelque part là dedans sans que je le sache?
par exemple ce lien (dans un page.tpl.php) marche sans les urls simplifiées
mais cleans urls je dois ajouter base_path au départ. Pourtant dans les deux cas ce lien est appelé depuis l'index.php de Drupal non?
Désolé d'être lourd mais j'avoue que la logique de ce que tu me dis m'échappe complètement :-) Pour moi un chemin c'est une logique d'emplacement physique de fichiers...
La question n'est pas
Permalien Soumis par Damien Tournoud le 5 Juin, 2009 - 11:25
La question n'est pas comment Drupal perçoit la chose, mais comment le navigateur voit les URLs.
Pour le navigateur, "/node/2" est le fichier "2" dans le répertoire "node". Les liens relatifs présents dans cette page seront donc relatifs au répertoire "node". Dans ton cas, le lien vers "files/plugin_jquery.js" sera donc vers "/node/files/plugin_jquery.js".
Par contre, avec "/?q=node/2", pour le navigateur il s'agit du fichier "/" à la racine. Les liens relatifs sont donc relatifs à la racine.
Arf je ne savais pas, merci
Permalien Soumis par nyl auster le 5 Juin, 2009 - 11:35
Arf je ne savais pas, merci beaucoup de m'avoir expliqué ce point légèrement super crucial... c'est un peu comme si je venais d'apprendre que la terre était ronde là X_O'