Comment passer la limitation a 9 paramètres en url rewriting

Bonjour,

J'ai entendu parler de mettre nos différents pramètres dans un array afin de outre passer cette limitation, auriez vous un exemple de comment le contourner ?

Merci d'avance..
 
Tu peux passer une seule variable contenant plusieurs valeurs séparées par un ... séparateur.
ex. : var1_var2_var3 etc...
Et ensuite tu scindes la chaîne pour récupérer chaque variable.
 
Je n'arrive pas a conceptualiser le procédé à appliquer..

Voici mes regles actuelles :
Code:
RewriteEngine on

# nom_departement-34.html
RewriteRule ^([[:alpha:]-]+)-([[:alnum:]]+)\.html$  villes_du_dep.php?dep=$2 [L]

# nom_departement-34-M.html
RewriteRule ^([[:alpha:]-]+)-([[:alnum:]]+)-([[:alpha:]]+)\.html$  villes_du_dep.php?dep=$2&lettre=$3&ndep=$1

# nom_departement-34-nom_ville-13622.html
RewriteRule ^([[:alpha:]-]+)-([[:alnum:]]+)-([[:alpha:]-]+)-([[:digit:]]+)\.html$ categories_metiers.php?dep=$2&idv=$4

# nom_departement-34-nom_ville-13622-nom_categorie-18.html
RewriteRule ^([[:alpha:]-]+)-([[:alnum:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)\.html$  metiers_categories.php?dep=$2&idv=$4&idc=$6

# nom_departement-34-nom_ville-13622-nom_categorie-18-nom_metier-1.html
RewriteRule ^([[:alpha:]-]+)-([[:alnum:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)\.html$ liste_des_clients.php?dep=$2&idv=$4&idc=$6&idm=$8

# 34-nom_ville-13622-nom_categorie-31-nom_metier-82-nom_client-86.html
RewriteRule ^([[:alnum:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alnum:]-]+)-([[:digit:]]+)\.html$ fiche_du_client.php?dep=$1&idv=$3&idc=$5&idm=$7&idcl=$9

Techniquement, j'aimerai rajouter un dernier champ "page = 1,2,3,4,5.." a mon client, mais ca me fait le 10 eme parametre..
 
Je cherche pas à ce que l'on me mache le travail, loin de là, je préfère apprendre à le faire pour être autonome..

Mais j'ai pas forcément compris le concept à appliquer :/
 
Encore moi :)

Sur un sujet parlant du même soucis, un memebre a répondu :

J'opterait pour une suite de division successive du nombre de paramètres que tu veux envoyer.

Ainsi si tu as 13 params tu le décompose en 9+4 ainsi tu sais que dans ta première occurence de la fonction tu as 9 params et 4 dans la 2eme occurence.

Malheureusement, le sujet date un peu et le membre peu actif, je ne peux pas lui demandé directement..

Voyai vous le concept ?


Merci beaucoup de votre aide précieuse.
 
Dans ton cas il y a une solution BEAUCOUP plus simple, qui t'évite de dépasser la limite des 9 :

Modifier les parenthèses capturantes !

Code:
# 34-nom_ville-13622-nom_categorie-31-nom_metier-82-nom_client-86.html
RewriteRule ^([[:alnum:]]+)-[[:alpha:]-]+-([[:digit:]]+)-[[:alpha:]-]+-([[:digit:]]+)-[[:alpha:]-]+-([[:digit:]]+)-[[:alnum:]-]+-([[:digit:]]+)-[[:alnum:]-]+-([[:digit:]]+)\.html$ fiche_du_client.php?dep=$1&idv=$2&idc=$3&idm=$4&idcl=$5&page=$6
******
Maintenant la solution au problème de la limitation à 9 paramètres

Ton rewriting pour l'instant, c'est du genre :
rewriterule mon_url-variable1-variable2-...etc index.php?variable1=$1&variable2=$2... jusqu'à 9.

Tu pourrais avois quelque chose de plus simple comme

rewriterule mon_url-variable /index.php?variable=$1

variable représente tous tes paramètres concaténés, séparés par un séparateur ("--","-","_",ce que tu veux)

Voici la dernière règle de ton htaccess :
# 34-nom_ville-13622-nom_categorie-31-nom_metier-82-nom_client-86.html
RewriteRule ^([[:alnum:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alpha:]-]+)-([[:digit:]]+)-([[:alnum:]-]+)-([[:digit:]]+)\.html$ fiche_du_client.php?dep=$1&idv=$3&idc=$5&idm=$7&idcl=$9

Au lieu de ça tu mets :
^(.*)\.html$ fiche_du_client.php?variable=$1

Tu me suis ?

Ensuite, sous php cette fois, tu n'as plus qu'à récupérer $_GET["variable"] et à l'exploser avec des expressions régulières:

Code:
<?php
$v=explode("ton séparateur",$_GET["variable"]);
$dep=preg_match("`^([a-z0-9]+)$`i",$v[0],$out)?$out[1]:false;
$idv=preg_match("`^([a-z0-9]+)$`i",$v[2],$out)?$out[1]:false;
$idc=preg_match("`^([a-z0-9]+)$`i",$v[4],$out)?$out[1]:false;
$idm=preg_match("`^([a-z0-9]+)$`i",$v[6],$out)?$out[1]:false;
$idcl=preg_match("`^([a-z0-9]+)$`i",$v[8],$out)?$out[1]:false;
$page=preg_match("`^([a-z0-9]+)$`i",$v[10],$out)?$out[1]:false; // il est là ton 10ème paramètre
?>
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut