8722 sujets

Développement web côté serveur, CMS

bonjour,

sur un site , je viens de mettre en place une ré-écriture des URL en php qui fonctionne bien, d'ailleurs voici ma règle dans le .htaccess


<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^occasion/([a-zA-Z0-9\-]*)/([a-zA-Z0-9\-]*)/([0-9]*)$  /fiche-vehicule.php?id_car=$3  [L]

</IfModule>



je prends une url du genre occasion/renault/clio-2/123 que je transforme en
fiche-vehicule.php?id_car=123
j'enlève les accents, je remplace les espaces par des - , tout ça, ça fonctionne


ce qui est bizarre c'est que depuis que j'ai fait ça, je suis obligé d'appeler tous mes fichiers (css, scripts; images .. etc) avec des chemins absolus, c'est à dire en plaçant un / devant chaque url ou src, sinon je vois pas mes images ou bien mes scripts ne sont pas chargés.

quelqu'un peut il m'expliquer pourquoi?
Modifié par lionel_css3 (09 Sep 2013 - 14:56)
Il ne faut jamais oublier que le navigateur n'a absolument pas connaissance de l'URL réécrite et que c'est juste une cuisine interne sur le serveur.

Ainsi quand tu écris dans ton code HTML par exemple
<link rel="stylesheet" href="style.css" />

Pour une page appelée à l'URL occasion/renault/clio-2/123
LE navigateur va demander le fichier à l'URL occasion/renault/clio-2/style.css
parce que pour lui, il n'y a pas de réécriture: il croit que "renault" et "clio-2" sont des dossiers qui existent réellement sur le serveur.

LE plus simple pour lever toute ambiguïté et être sûr que c'est bien la bonne URL qui est générée consiste bien sûr à spécifier le chemin -absolu en commençant par /. Tu pourrais aussi compter le nombre de ../ nécessaires, mais c'est moins pratique. Tu pourrais aussi faire en sorte que le serveur renvoie toujours le style.css peu importe de quel répertoire il est appelé, mais c'est relativement inutile et peut mener à des conséquences perverses pour le SEO (duplicate contents).
@quentin, merci pour ta réponse, et effectivement, dit comme ça, ça tombe sous le sens... et tout s'explique..

donc il n'y a pas d'inconvénient à spécifier l'url en chemin absolu avec / ?

il m'avait semblé lire une fois dans un livre de David Powers qu'i y avait parfois des inconvénients.
a écrit :
donc il n'y a pas d'inconvénient à spécifier l'url en chemin absolu avec / ?
il m'avait semblé lire une fois dans un livre de David Powers qu'i y avait parfois des inconvénients.


Pas à ma connaissance en tout cas. Tant qu'on s'y retrouve et qu'on évite les liens morts, je ne vois pas en quoi ça poserait un problème.