Pourquoi clean url "détruit" certaines adresses url de mon code ?

Catégories:

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 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 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

<?php
<script type="text/javascript" src="files/pluing_jquery.js"></script>
?>

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 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 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’

Syndiquer le contenu