8792 sujets

Développement web côté serveur, CMS

Bonjour
Je sèche sur une règle de réécriture :
Ma page dynamique :
/recherche2.php?p=une,requete&page=4
Mon URL réécrite :
/recherche2/page-4/une,requete.html
Ma règle dans le .htaccess :
RewriteRule ^recherche2/page-(.*)/(.*)\.html$ /recherche2.php?p=$2&page=$1 [L]

Je ne parviens à récuperer aucune des deux valeurs de $_GET['page'], ou $_GET['p'] ... je seche .

Quelqu'un peut m'aider ? ... je suis tout sec ...

PS : ce n'est pas une question de / placés devant "recherche2"
Modifié par Nickargall (21 Jan 2007 - 22:56)
Bonsoir à toi ...

Je me permets de te rappeler que ce forum a pour but de répondre à des problèmes spécifiques de respect des Standards Web rencontrés avec les technologies serveurs.

Je ne saurais que trop te conseiller d'aller faire un tour dans la liste des ressources PHP.
Tu y trouveras certainement la réponse à ta question...

... Et au passage, si tu pouvais éditer ton message et entourer le code au moyen des balises appropriée, cela faciliterait la tâche des personnes qui seraient éventuellement intéressées de te répondre ...
Modifié par Cygnus (18 Jan 2007 - 01:08)
si tu utilises apache+php, il y a fort à parier que le problème vienne des slashes... même si php sait parser les variables avec les slashes comme par exemple :

a écrit :
tu as l'url www.domaine.tld/val1/val2/val3, à la racine tu auras un script qui interprétera la chaîne "val1/val2/val3" et attribuera les valeurs aux bonnes variables.


apache, lui comprendra ceci :
a écrit :
tu as l'url www.domaine.tld/val1/val2/val3, donc apache recherchera le dossier "val3" contenu dans "val2" contenu dans "val1" contenu dans la racine et essayera d'en afficher l'index ou, à défaut la liste des fichiers
ce qui n'est vraiment pas ce que tu veux faire...

la solution pour ton pb :

utiliser des url du type (en reprenant ton exemple) :
a écrit :
/recherche2-page-4-p-requete.html

sur laquelle tu appliqueras les règles suivantes (ou du même style) :
RewriteEngine on
RewriteRule recherche2(-.+)-([^-]+)-([^-&]*)([^-]*)\.html recherche2$1&$2=$3$4\.html [N]
RewriteRule recherche2-([^-]+)-([^-]*)(.*)\.html /recherche2.php?$1=$2$3 [L]

qui te donnera au final :
a écrit :
recherche2.php?page=4&p=requete


j'espère avoir répondu a ta question, et il est vrai que le topic n'a rien à voir avec le sujet du forum...
Modifié par Jeff-com (21 Jan 2007 - 19:41)
J'avoue m'être trompé d'endroit.
Le problème ne venait pas de là mais simplement du fait que ma page php se nommait recherche2.php et que les répertoires virtuels étaient sous la forme /recherche2/blablablabla

En tâtonnant j'ai pu identifier celà. J'ai simplement changé le nom de ma page recherche2.php en search.php et tout a fonctionné.

Surtout ne me demandez pas pourquoi.

Merci en tout cas d'avoir essayé de résoudre mon pb, mais tout est ok, je vais pouvoir classer ce topic comme résolu.

Bonne soirée