Problème de variables dans mon rewriting, valeur limitée ??

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

efrancilien
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2008

Problème de variables dans mon rewriting, valeur limitée ??

Message le Ven Juin 06, 2008 23:49

Bonjour j'ai le souci suivant.

j'ai dans mon fichier .htaccess la syntaxe suivante :
Code: Tout sélectionner
RewriteRule ^motscles,(.*),([a-z0-9A-Z]+)\.html$  /recherche.php?var1=$1&var2=$2 [L]


Sur ma page test j'ai créer deux liens par image pour tester le rewriting dans une boucle.
Les variables sont ensuite transmises à une requete Sql ... et ma page recherche m'affiche un catalogue.

Code: Tout sélectionner
lien1a : recherche.php?var1=pommes&var2=AbCd0
lien1b : motscles,pommes,AbCd0.html


Code: Tout sélectionner
lien2a : recherche.php?var1=poires&var2=AxSD1d
lien2b : motscles,poires,AbCd0.html

...

Dans les deux cas le rewriting fontionne bien !
J'arrive toujours sur la bonne page mais lorsque Var2 à une longeur de chaine plus grande
le lien html me renvoi un erreur SQL comme si la Var2 n'existait pas ou etait eronnée alors qu'en version php, tout fonctionne !
Exemple :
Code: Tout sélectionner
lien3a : recherche.php?var1=poires&var2=AxSD1dVFtRz03459Rf8xCs [L] (PAGE TROUVEE  - SQL OK)
lien3b : motscles,poires,AxSD1dVFtRz03459Rf8xCs.html (PAGE TROUVEE - SQL PAS DE REPONSE TROUVEES)


Je croyais que du moment que la page s'affichait, tout devait fonctionner pareil ?
La longueur de la valeur d'une variable est elle limitée dans le rewritting ???
Sinon d'où provenir le problème, je tourne en rond depuis toute la soirée !!

Merci d'avance pour votre lumière.

Vap
WRInaute passionné
WRInaute passionné
 
Messages: 1090
Inscription: 17 Juin 2007

Message le Sam Juin 07, 2008 8:55

Imprime la veluer des variables dans ta page avant d'interrroger la base de donnée. Tu verra bien ce qui se passe.

Je n'ai rien lu sur une limite en longueur des variables, mais elle existe peut etre.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Problème de variables dans mon rewriting, valeur limitée

Message le Sam Juin 07, 2008 9:33

efrancilien a écrit:La longueur de la valeur d'une variable est elle limitée dans le rewritting ???


Pas de limite d'Apache mais vu que la longueur de l'url réécrite est limité à 256 caractères. La variable pourra faire max ~250 caracteres

efrancilien
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2008

Problème de casse en retour de $_GET

Message le Sam Juin 07, 2008 10:27

voilà le resulat :

Code: Tout sélectionner
Valeur de $_GET['var2'] recupérée par la version php
D0DhTJWHioccKtmXOSnQU4Wb09FtRfrV



Code: Tout sélectionner
Valeur de $_GET['var2'] recupérée par la version rewittée
d0dhtjwhioccktmxosnqu4wb09ftrfrv


Je précise que le lien 1 et 2 de depart contient bien dans les deux cas :
Code: Tout sélectionner
D0DhTJWHioccKtmXOSnQU4Wb09FtRfrV

Pourquoi mon $_GET['var2'] issu de mon rewritting modifie t'il la casse de certains caractères et comment eviter qu'il le fasse ?

merci encore.

Vap
WRInaute passionné
WRInaute passionné
 
Messages: 1090
Inscription: 17 Juin 2007

Message le Sam Juin 07, 2008 20:56

Ca met en minuscule apparament donc. Mais ça ne le fait pas avec des chaines plus courtes?

Sinon, on m'a toujours dit que c'était pas une bonne idée d'utiliser des majuscules dans les URL... Bon, ça ne résoud pas le problème, ça le contourne.

Quelle version d'apache tu as?

efrancilien
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Inscription: 6 Juin 2008

Message le Dim Juin 08, 2008 14:02

Pour la version apache, c'est celle installée avec le kit EasyPh 1.8
En fait, j'ai fait une erreur d'analyse, ce n'est pas une question de longueur de chaine mais bien un probleme de casse.
Toutes les majuscules de l'URL sont transformées en minuscules par le serveur au moment du rewriting.
Concernant la valeur, je la récupère d'une API que j'exploite, donc je ne peux pas la modifier !

N'ayant pas trouvé comment faire directement, je me suis monté un fonction qui crypte la valeur dans l'url et qui la décrypte ensuite sur la page cible, je n'ai trouvé que cela pour résoudre mon problème. Pas super catholique mais au moins tout fonctionne désormais !

Merci pour vos réponses à tous.

Ps voici le code utilisé, on sait jamais çà peut servir à d'autres !

Code: Tout sélectionner
Function Crypte($Chaine) {
      $PassCrypte="";
      $keys = array("a" => "00", "b" => "01", "c" => "02", "d" => "03", "e" => "04", "f" => "05",
              "g" => "06", "h" => "07", "i" => "08", "j" => "09", "k" => "10", "l" => "11",
              "m" => "12", "n" => "13", "o" => "14", "p" => "15", "q" => "16", "r" => "17",
              "s" => "18", "t" => "19", "u" => "20", "v" => "21", "w" => "22", "x" => "23",
              "y" => "24", "z" => "25",
              "A" => "26", "B" => "27", "C" => "28", "D" => "29", "E" => "30", "F" => "31",
              "G" => "32", "H" => "33", "I" => "34", "J" => "35", "K" => "36", "L" => "37",
              "M" => "38", "N" => "39", "O" => "40", "P" => "41", "Q" => "42", "R" => "43",
              "S" => "44", "T" => "45", "U" => "46", "V" => "47", "W" => "48", "X" => "49",
              "Y" => "50", "Z" => "51",
           "0" => "aa", "1" => "bb", "2" => "cc", "3" => "dd", "4" => "ee", "5" => "ff",
           "6" => "gg", "7" => "hh", "8" => "ii", "9" => "jj");

      $number = strlen($Chaine);
      for ($i=0; $i<$number; $i++) {
         $PassCrypte.=$keys[substr($Chaine, $i, 1)];
      }
return $PassCrypte;
}







Code: Tout sélectionner
function Decrypte ($Chaine){
      $PassDeCrypte="";
      $keys = array("00" => "a", "01" => "b", "02" => "c", "03" => "d", "04" => "e", "05" => "f",
                 "06" => "g", "07" => "h", "08" => "i", "09" => "j", "10" => "k", "11" => "l",
                 "12" => "m", "13" => "n", "14" => "o", "15" => "p", "16" => "q", "17" => "r",
                 "18" => "s", "19" => "t", "20" => "u", "21" => "v", "22" => "w", "23" => "x",
                 "24" => "y", "25" => "z",
                 "26" => "A", "27" => "B", "28" => "C", "29" => "D", "30" => "E", "31" => "F",
                 "32" => "G", "33" => "H", "34" => "I", "35" => "J", "36" => "K", "37" => "L",
                 "38" => "M", "39" => "N", "40" => "O", "41" => "P", "42" => "Q", "43" => "R",
                 "44" => "S", "45" => "T", "46" => "U", "47" => "V", "48" => "W", "49" => "X",
                 "50" => "Y", "51" => "Z",
              "aa" => "0", "bb" => "1", "cc" => "2", "dd" => "3", "ee" => "4", "ff" => "5",
              "gg" => "6", "hh" => "7", "ii" => "8", "jj" => "9");
         $number = strlen($Chaine);
         for ($i=0; $i<$number; $i=$i+2) {
         $PassDeCrypte.=$keys[substr($Chaine,$i,2)];
         }
return $PassDeCrypte;
}   
[/code]


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité