URL Rewriting et Redirection 301

Résolu/Fermé
f123b Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 5 septembre 2009 - 8 juin 2009 à 00:25
f123b Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 5 septembre 2009 - 9 juin 2009 à 04:00
bonsoir, j'ai un problème de redirection 301 dans le htaccess:
j'ai des urls de cette forme: search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4
j'utilise la règle suivante dans le htaccess:

RewriteEngine On
RewriteRule (.*)-(.*)-(.*)-(.*)\.html$ /search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4 [L]


pas de problème les url sont bien réécrites,
par contre ces données proviennent d'un formulaire qui utilise la méthode get et qui appelle le fichier search.php.
Comment faire sans utiliser de header location ou de javascript, donc avec le htaccess pour avoir une redirection 301 quand on soumet le formulaire?

j'ai essayer des règles de ce style:

RedirectPermanent /search.php?keyword=(.*)&categorie=(.*)&page=(.*)&plusmoins=(.*) /$1-$2-$3-$4\.html
mais ca ne fonctionne pas (boucle infini).

peut être en utilisant RewriteCond %{QUERY_STRING} ... mais j'arrive pas à formuler la syntaxe.

3 réponses

Logique que cela fasse une boucle infinie, chacune de tes règles s'inversant mutuellement.
Une solution simple serait que
"RewriteRule (.*)-(.*)-(.*)-(.*)\.html$ /search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4 [L]"
devienne
"RewriteRule (.*)-(.*)-(.*)-(.*)\.html$ /search.php?do=access&keyword=$1&categorie=$2&page=$3&plusmoins=$4 [L] "

où "do=access" ou n'importe quelle assignation de valeur empêche l'autre règle d'agir.
0
f123b Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 5 septembre 2009
9 juin 2009 à 02:16
Bonsoir et merci d'avoir répondu mais j'ai essayé et ca ne marche pas, je ne comprend pas bien pourquoi rajouter une variable. Ce que je cherche a faire c'est une redirection permanente des anciennes URL vers les URL rewrité.
Donc des url:
search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4
j'obtient les URL:
$1-$2-$3-$4\.html
avec la règle:
RewriteRule (.*)-(.*)-(.*)-(.*)\.html$ /search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4 [L]

Ca ca marche, maintenant je voudrais écrire une règle qui me fais une redirection 301 des URL:
search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4
vers les URL rewrité:
$1-$2-$3-$4\.html.

Par exemple si je tape "lcd" dans mon formulaire de recherche, ca me génère l'URL:
search.php?keyword=lcd&categorie=$2&page=$3&plusmoins=$4
je la rewrite sous la forme:
lcd-$2-$3-$4.html

Comment effectuer une redirection 301 de l'url qui vient du formulaire vers l'url rewrité:
lcd-$2-$3-$4.html??

Peut-on mettre ces 2 règles dans le même .htacess?? Ou est ce qu'il y a une autre méthode sans javascript ou header location??
0
f123b Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 5 septembre 2009
9 juin 2009 à 04:00
j'avais fais une erreur, ca fonctionne très bien le fait de rajouter une variable.
Encore Merci...
0