Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Les Langages Du Web _ Problème de lien relatif à la racine du site

Écrit par : Rwan75 2 Aug 2007, 11:27

Bonjour

Je suis graphiste et pas programmeur, je monte un site en php pour pouvoir utiliser un maximum d'include.
J'ai installer Mamp, tout fonctionne, sauf les liens relatifs à la racine du site. Dans Dreamweaver je vois les images, mais dans l'URL locale elles n'apparaissent pas.

Quelqu'un peut-il maider ?

Merci

Écrit par : Hyp 2 Aug 2007, 11:30

Il faudrait préciser wink.gif

Par exemple, donnes le code que tu utilises pour les liens, et l'arborescence de tes fichiers.

Parce que là on ne peut pas dire grand chose...

Écrit par : Rwan75 2 Aug 2007, 12:18

Ok

Par exemple une image à afficher.
Le chemin :
/media/atej/viewer.gif
media est un dossier à la racine du site

Et voici l'URL du site avec Mamp
http://localhost:8888/elmstudio/index.php
elmstudio est la racine du site en local.

Les liens relatifs marchent mais pas les liens abolus.

A mon avis ce n'est pas un probème de code pour les liens, mais plutôt un problème de définition de racine de site dans Mamp. Mais ça je ne sais pas comment faire (htaccess ?).

Écrit par : Sir Morgan 2 Aug 2007, 12:47

Tu veux dire que le lien absolu :

http://localhost:8888/elmstudio/media/atej/viewer.gif

... ne fonctionne pas ? blink.gif

Écrit par : Rwan75 2 Aug 2007, 13:20

Non c'est pas ça.

L'adresse de ma page en local avec Mamp c'est :
http://localhost:8888/elmstudio/index.php
elmstudio est le répertoire de mon site
J'importe une image dans la page "index.php" en lien absolu :
<img src="/media/atej/bacground_00.jpg" alt="z" width="959" height="524">
L'image apparaît dans dreamweaver pas dans firefox.

Écrit par : Sir Morgan 2 Aug 2007, 13:50

Mais le lien que tu donnes, ce n'est pas un lien absolu, ça !.. c'est un lien relatif !

Un lien absolu décrit la totalité du chemin depuis http jusqu'au fichier.

Tout dépend où se situe ton dossier media par rapport à ta page d'index. Si il est au même niveau, cad dans le dossier elmstudio, alors tu peux te contenter d'un lien relatif comme tu le dis et ça doit fonctionner.

Pour remonter une arborescence en lien relatif on écrit le lien comme ceci > ../media/atej/bacground_00.jpg

Mais je serais étonné que ton dossier media se trouve au même niveau que ton dossier racine elmstudio...

Pour pouvoir t'aider, il faut que tu dises où se situe ton dossier media par rapport au fichier index.

Écrit par : canari 2 Aug 2007, 16:43

CITATION(Rwan75 @ 2 Aug 2007, 13:18) [snapback]2296562[/snapback]

Ok

Par exemple une image à afficher.
Le chemin :
/media/atej/viewer.gif
media est un dossier à la racine du site

Et voici l'URL du site avec Mamp
http://localhost:8888/elmstudio/index.php
elmstudio est la racine du site en local.

Les liens relatifs marchent mais pas les liens abolus.

A mon avis ce n'est pas un probème de code pour les liens, mais plutôt un problème de définition de racine de site dans Mamp. Mais ça je ne sais pas comment faire (htaccess ?).

dans ton cas, il faut: media/atej/viewer.gif (sans le / devant)

Écrit par : Rwan75 2 Aug 2007, 18:23

Heu...

Voici l'arbo

- racine du site (dossier elmstudio)
- fichier_index.php
- dossier_media
- dossier_atej
- fichier_image.jpg

si je veux un lien relatif à la page index.php :
media/atej/fichier_image.jpg

si je veux un lien relatif à la racine du site (absolu) :
/media/atej/viewer.gif
je mets un slash devant le lien pour que le navigateur retourne à la racine et parcours l'arbo jusqu'au dossier atej.

Imaginons un fichier index.php dans le dossier atej avec une image à la racine :
Chemin relatif au document :
../../fichier_image.jpg (descente de 2 répertoires par rapport au document)
Chemin relatif à la racine du site (absolu) :
/fichier_image.jpg (le slash renvoie à la racine du site où se trouve le fichier image)

Je bosse comme ça depuis quelques années.

"Un lien absolu décrit la totalité du chemin depuis http jusqu'au fichier"
Pas forcément, ici il s'agit d'un lien absolu relatif à la racine du site. Le slash renvoie à la racine.
Un lien avec http est effectivement un lien absolu, mais lorsque tu bosses sur un site et que tu mets un lien absolu http sur toutes tes pages, le navigateur va chercher les fichiers que tu as mis en ligne.
Ce n'est pas très pratique, l'intérêt étant de bosser d'abord en local, et de transférer ensuite le site sur le serveur, en ligne. Le slash permet aux liens de marcher en local et en ligne.

Il suffit d'aller voir un site, par exemple adobe.fr, voir le code source, voici un des liens pour une css :
href="/css/master_import/print.css

Mais comme je l'ai déjà dit Sir Morgan, mon problème c'est que Mamp ne trouve pas la racine du site, je pense que c'est plutôt un problème de configuration de serveur en local, et ça je ne sais pas faire.



Voici une explication dans l'aide de Dreamweaver sur les liens relatifs et absolus :

Il existe trois types de chemins d'accès de liaison :

Chemins absolus (par exemple, http://www.adobe.com/support/dreamweaver/contents.html).
Chemins relatifs au document (par exemple dreamweaver/contents.html).
Chemins relatifs à la racine du site (par exemple /support/dreamweaver/contents.html).

Écrit par : Hyp 2 Aug 2007, 18:35

CITATION(Rwan75 @ 2 Aug 2007, 19:23) [snapback]2296902[/snapback]

"Un lien absolu décrit la totalité du chemin depuis http jusqu'au fichier"
Pas forcément, ici il s'agit d'un lien absolu relatif à la racine du site.

Non...
Un lien est soit absolu, soit relatif.
Tu le dis d'ailleurs toi-même en citant la doc de Dreamweaver...

Écrit par : Rwan75 2 Aug 2007, 19:29

Tu as raison dans l'absolu. Ha ha ha.

C'est les programmeurs de l'agence dans laquelle je bossais qui me disaient de mettre les liens en absolu. Mais bon...

Je vais tenter un autre forum pour avoir une réponse à ma question et pas un cours d'html pour débutant.

Sans rancune.

Écrit par : Hyp 2 Aug 2007, 20:32

Regardes dans MAMP > bouton Préférences > Onglet Apache > quel est le document Root ?
/ ou /elmstudio ? (Ou autre chose ?)
Sélectionnes ton dossier elmstudio si tu es dans le premier cas.

CITATION(Rwan75 @ 2 Aug 2007, 20:29) [snapback]2296953[/snapback]

[...]un cours d'html pour débutant.

Ça ne fait jamais de mal wink.gif

Écrit par : canari 3 Aug 2007, 01:00

CITATION(Rwan75 @ 2 Aug 2007, 20:29) [snapback]2296953[/snapback]

Tu as raison dans l'absolu. Ha ha ha.

C'est les programmeurs de l'agence dans laquelle je bossais qui me disaient de mettre les liens en absolu. Mais bon...

Je vais tenter un autre forum pour avoir une réponse à ma question et pas un cours d'html pour débutant.

Sans rancune.

si tu veux vraiment faire un lien absolu, tu as intérêt à connaître le chemin complet pour arriver à ton site, tu peux avoir l'info via phpinfo() qui te donnera tout ça.
mais si ton site a une arboresence telle que tu l'as donnée, il faut bien comprendre que /elmstudio, ce n'est pas une adresse absolue. il y a un chemin physique avant d'arriver à ce répertoire.

Écrit par : Rwan75 3 Aug 2007, 11:03

"Regardes dans MAMP > bouton Préférences > Onglet Apache > quel est le document Root ?"

/Applications/MAMP/htdocs

Le répertoire de mon site se trouve dans le dossier htdocs.

Je me souviens que les programmeurs rajoutaient quelques lignes dans un fichier pour que les liens relatifs à la racine du site marchent en local. Mais dans quel fichiers ?

Le principal intérêt pour moi des liens relatifs à la racine du site, c'est de faire des includes avec des menus, barres de navigation, dans un répertoire includes. De cette manière les liens marchent sur toutes les pages, alors qu'avec des liens relatifs au document ça ne peut pas marcher :
http://blog.alsacreations.com/2005/05/29/156-le-point-sur-la-fonction-include-php
Les menus en include sont très pratiques lors de mise à jour, ajout de rubrique...

Merci pous vos réponses

Ça ne fait jamais de mal (un cours pour débutant)
Je suis d'accord. Mais au risque de me répéter, le problème ne vient pas des chemins (les images apparaissent dans dreamweaver, mais pas à l'adresse http://localhost:8888/elmstudio/). Le problème est, à mon avis lié au serveur local Apache.

Écrit par : Hyp 3 Aug 2007, 12:01

CITATION(Rwan75 @ 3 Aug 2007, 12:03) [snapback]2297481[/snapback]

"Regardes dans MAMP > bouton Préférences > Onglet Apache > quel est le document Root ?"

/Applications/MAMP/htdocs

Le répertoire de mon site se trouve dans le dossier htdocs.

Remplaces par
/Applications/MAMP/htdocs/elmstudio

Et normalement ce sera bon.

Écrit par : LoupSolitaire 3 Aug 2007, 12:25

CITATION(Sir Morgan @ 2 Aug 2007, 14:50) [snapback]2296658[/snapback]

...

Un lien absolu décrit la totalité du chemin depuis http jusqu'au fichier.

...


Un lien absolu commence par / . Il précise le chemin par rapport à la racine du site. Il n'est pas nécessaire de spécifier le serveur ou le protocole puisque par définition il s'agit du site en cours.

Un lien relatif commence par n'importe quel autre caractère. Le chemin est donc interprété à partir du répertoire en cours.

A+,
Loup

Écrit par : Rwan75 3 Aug 2007, 13:30

CITATION(Hyp @ 3 Aug 2007, 13:01) [snapback]2297525[/snapback]

CITATION(Rwan75 @ 3 Aug 2007, 12:03) [snapback]2297481[/snapback]

"Regardes dans MAMP > bouton Préférences > Onglet Apache > quel est le document Root ?"

/Applications/MAMP/htdocs

Le répertoire de mon site se trouve dans le dossier htdocs.

Remplaces par
/Applications/MAMP/htdocs/elmstudio

Et normalement ce sera bon.


Ok ça marche. Merci.
Le seul problème, c'est qu'il faudra que je change le chemin dans les préférences de Mamp pour chaque site créé. Mais c'est cool.

Mon URL en local est maintenant la racine de mon serveur : http://localhost:8888/

Écrit par : Sir Morgan 3 Aug 2007, 13:35

Okay pour cette précision sémantique, LoupSolitaire.

Disons qu'on devrait plutôt parler d'url absolue (quel que soit le protocole) et de liens relatifs ou absolus.
smile.gif

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)