URL rewriting et formulaire GET

Nouveau WRInaute
Bonjour,

J'ai une simple question sur l'url rewriting, j'arrive bien à écrire des règles pour des liens en durs, mais je ne vois pas comment faire pour des liens générer à partir d'un formulaire GET.

Par exemple, j'ai cette règle :
Code:
RewriteRule ^le-mag-([0-9]+)-[a-zA-Z-]+\.html$ index.php?action=lemag&communes=$1 [L,QSA]
qui redirige le-mag-10-Nom-de-la-ville.html vers index.php?action=lemag&communes=10

Mais le problème est que c'est lien ne sont pas écrit en dur dans ma page. J'ai un formulaire GET avec un menu déroulant pour sélectionner la commune :
Code:
<form action="index.php?action=lemag" method="GET" id="formulaire_selection">
	<select name="communes">
		<option value="#">Toutes les communes</option>
		<option value="1">Commune 1</option>
		<option value="2">Commune 2</option>
		<option value="3">Commune 3</option>
		...
	</select>						
	<input type="submit" name="valider" value="Valider" />			
</form>

En validant ce formulaire j'arrive donc sur une page index.php?action=lemag&communes=1, or je voudrais arriver sur le-mag-1-Commune-1.html.
Comment puis je faire ? Si je fais une règle de redirection pour arriver sur l'URL le-mag-1-Commune-1.html (l'inverse de la règle écrite plus tôt) je vais tourner en boucle non ?

Merci d'avance.
 
WRInaute passionné
bonjour,

à la place de ta liste, utilise un "menu de redirection" (un peu comme le select que tu utilise)
et génère les option comme ceci :

Code:
<option value="0">Toutes les communes</option>
      <option value="http://www.le-mag-1-Commune-1.html ">Commune 1</option>
      <option value="http://www.le-mag-2-Commune-2.html ">Commune 2</option>
      <option value="http://www.le-mag-3-Commune-3.html ">Commune 3</option>
 
Nouveau WRInaute
Hum, merci pour ta réponse déjà. Tu penses à un truc comme ça :

Code:
<form action="lemag.html" method="GET">
	<select name="redirect">
		<option value="#">Toutes les communes des Alpilles</option>
		<option value="http://www.monsite.fr/lemag-1-commune.html">Commune 1</option>
		<option value="http://www.monsite.fr/lemag-2-commune2.html">Commune 2</option>
		<option value="http://www.monsite.fr/lemag-3-commune3.html">Commune 3</option>
	</select>
</form>

En validant ce formulaire j'arriverais donc sur
http://www.mondiste.fr/lemag.html? redirect=http://www.monsite.fr/lemag-1-commune.html (sans espace après ?)
Et il me faudrait faire une règle avec rewriteCond sur QUERY_STRING pour récupérer la valeur de la variable redirect et redirigé vers cette page ?

C'est bien ça ? Parce que je trouve ça un peu lourd quand même. Enfin s'il y a que ça qui peut me sauver...


(Edit : rajout d'un espace dans l'url pour la mise en page)
 
WRInaute passionné
Euh........ non
tu y es pas encore...

un ptit bout de javascript :

Code:
<script type="text/javascript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>

et ton form

Code:
<form id="form" name="form" method="GET" action="">
  <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
      <option value="#">votre choix</option>
      <option value="http://www.monsite.fr/lemag-x-communex.html">Toutes les communes des Alpilles</option>
      <option value="http://www.monsite.fr/lemag-1-commune.html">Commune 1</option>
      <option value="http://www.monsite.fr/lemag-2-commune2.html">Commune 2</option>
      <option value="http://www.monsite.fr/lemag-3-commune3.html">Commune 3</option>  
  </select>
</form>

en gros, dès que tu choisi, tu es re-routé directement vers l'url en "value". et puisque tu as déjà géré l'url rewriting...
tout fonctionne :)
( ca c'est un simple menu de reroutage DW de base)
 
Nouveau WRInaute
Ah oui ok, j'avais pas pensé au JS.
Par contre ça pose un petit problème d'accessibilité pour ceux qui ne l'ont pas activé, il faut faire une vérif en PHP et un header Location si besoin non ?
 
WRInaute passionné
Si je JS n'est pas activé, la redirection ne se fais pas.

ce type de menu est pratique, mais je pense que c'est un bon complément d'une navigation avec lien interne :)
pas de javascript, pas de chocolat :)
 
Discussions similaires
Haut