Problème de mise en place URL rewriting - PHP - Programmation
MarshPosté le 09-08-2008 à 12:18:21
Bonjour à tous,
Je rencontre un problème avec l'url rewriting que je suis en train d'installer sur mon site (je suis en local, wamp5).
Toutes les pages s'incluent à partir de l'index, en reprenant des variables GET. Toutes mes pages sont donc de la forme : index.php?rubrique=x&page=y, et accessoirement un id=z dans le cas d'une page générique qui fera appel à la BDD. Voici mon index :
- page_inc récupère les 2 variables "rubrique" et "page", et va chercher le fichier correspondant dans l'arborescence à partir de la racine (dans un dossier "pages". Il crée ensuite une variable $contenu qui est inclue plus bas dans l'index (entre le header et le footer) - php_inc va chercher le code php rattaché exclusivement à la page affichée, classé exactement comme dans le dossier "pages" (par rubrique et par page : exemple validation d'un formulaire, requêtes à la base, etc.) - idem pour js_inc - le css est lui inclus génériquement dans toutes les pages dans les balises head (contenues dans js_inc, qui intègre le javascript en fonction de la page visitée, lui aussi dans les balises head)
Tous les liens sont en relatifs (ex : css/style.css) puisque tout part de la racine du site (rappel nous sommes toujours sur l'index), d'où peut-être le problème.
L'URL rewriting en lui même "fonctionne", c'est à dire que j'arrive à me rendre sur la page voulue. J'ai inséré un fichier .htaccess à la racine du site, donc juste à côté de l'index (rappel, nous sommes toujours dessus. Voici la forme de mes règles de redirection :
Options +FollowSymlinks RewriteEngine on RewriteRule ^x/y/$ index.php?rubrique=x&page=y [L]
... Mais il y a un mais, plusieurs problèmes se posent lors de l'affichage : - Mon css n'est plus inclus - Mes liens au survol on maintenant la forme : localhost/monsite/x/y/index.php?rubrique=a&page=b a et b variant d'un lien à l'autre ; mais localhost/monsite/x/y/ est lui constant sur tous les liens lorsque je mon trouve sur la page x/y/ !!! Ils sont comme doublés.
J'ai conscience de plusieurs choses : mes répértoires sont virtuels, x/y/ n'existant pas réellement dans mon arborescence. J'ai donc cherché sur le net et trouvé la balise <base>, ou directement dans le .htaccess RewriteBase qui pourraient solutionner mon cas, mais je ne sais ni comment les utiliser, ni même s'ils sont adaptés à mon cas. Egalement, le site fonctionne très bien AVANT ma tentative d'URL rewriting. Je ne changerai donc pas la forme du site, j'en suis très content, et suis sûr qu'il existe une solution pour mon cas (j'anticipe déjà certaines réponses...).
Voilà j'espère avoir été clair dans mon explication, mais ayant la tête dedans depuis plusieurs jours, il se peut que j'ai oublié certains détails. Dans quel cas je vous remercie d'avance de votre indulgence (:-)) et reste au taquet pour vous donner tout détail supplémentaire.
Marsh Posté le 09-08-2008 à 12:18:21
Bonjour à tous,
Je rencontre un problème avec l'url rewriting que je suis en train d'installer sur mon site (je suis en local, wamp5).
Toutes les pages s'incluent à partir de l'index, en reprenant des variables GET.
Toutes mes pages sont donc de la forme : index.php?rubrique=x&page=y, et accessoirement un id=z dans le cas d'une page générique qui fera appel à la BDD.
Voici mon index :
<?php
include('include/config_inc.php');
include('include/constant_inc.php');
include('include/vars_inc.php');
include('include/function_inc.php');
include('include/db_inc.php');
include('include/page_inc.php');
session_start();
connection_base();
include('include/php_inc.php');
include('include/header_inc.php');
include('include/js_inc.php');
include('frame/header.php');
include($contenu);
include('frame/footer.php');
mysql_close();
?>
- page_inc récupère les 2 variables "rubrique" et "page", et va chercher le fichier correspondant dans l'arborescence à partir de la racine (dans un dossier "pages". Il crée ensuite une variable $contenu qui est inclue plus bas dans l'index (entre le header et le footer)
- php_inc va chercher le code php rattaché exclusivement à la page affichée, classé exactement comme dans le dossier "pages" (par rubrique et par page : exemple validation d'un formulaire, requêtes à la base, etc.)
- idem pour js_inc
- le css est lui inclus génériquement dans toutes les pages dans les balises head (contenues dans js_inc, qui intègre le javascript en fonction de la page visitée, lui aussi dans les balises head)
Tous les liens sont en relatifs (ex : css/style.css) puisque tout part de la racine du site (rappel nous sommes toujours sur l'index), d'où peut-être le problème.
L'URL rewriting en lui même "fonctionne", c'est à dire que j'arrive à me rendre sur la page voulue. J'ai inséré un fichier .htaccess à la racine du site, donc juste à côté de l'index (rappel, nous sommes toujours dessus. Voici la forme de mes règles de redirection :
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^x/y/$ index.php?rubrique=x&page=y [L]
... Mais il y a un mais, plusieurs problèmes se posent lors de l'affichage :
- Mon css n'est plus inclus
- Mes liens au survol on maintenant la forme : localhost/monsite/x/y/index.php?rubrique=a&page=b
a et b variant d'un lien à l'autre ; mais localhost/monsite/x/y/ est lui constant sur tous les liens lorsque je mon trouve sur la page x/y/ !!! Ils sont comme doublés.
J'ai conscience de plusieurs choses : mes répértoires sont virtuels, x/y/ n'existant pas réellement dans mon arborescence. J'ai donc cherché sur le net et trouvé la balise <base>, ou directement dans le .htaccess RewriteBase qui pourraient solutionner mon cas, mais je ne sais ni comment les utiliser, ni même s'ils sont adaptés à mon cas.
Egalement, le site fonctionne très bien AVANT ma tentative d'URL rewriting. Je ne changerai donc pas la forme du site, j'en suis très content, et suis sûr qu'il existe une solution pour mon cas (j'anticipe déjà certaines réponses...).
Voilà j'espère avoir été clair dans mon explication, mais ayant la tête dedans depuis plusieurs jours, il se peut que j'ai oublié certains détails. Dans quel cas je vous remercie d'avance de votre indulgence (:-)) et reste au taquet pour vous donner tout détail supplémentaire.
Très bonne journée.
M.