S'inscrire | Pass oublié
English Français

Forum > Bugs

Résolution d'un bug dans l'URL rewriting

 
Auteur Sujet

Résolution d'un bug dans l'URL rewriting
mer 30 sep 09 à 19:04

Bon, à priori il y a eu un pb dans le forum, certains posts ont disparu, dont celui que j'avais écrit au sujet du bug concernant l'option de l'URL-rewriting.

En fait, c'est bien la fonction convert_url qui pose problème et que j'ai modifié de la manière suivante dans le fichier fonction.php du rep include :

function convert_url($s,$c=URL_REWRITE)
{
 if(isset($_GET['fen']) AND $_GET['fen']=="pop") { $s.="&fen=pop"; }
 
 //if((ADMIN!=1 AND $c==1) OR (ADMIN==1 AND URL_REWRITE==1 AND $c==2))  // si c'est un admin, pas besoin de convertir
 if(($c==1) OR (URL_REWRITE==1 AND $c==2))
 {
 // Modif pour suppression des valeurs nulles de v2 et v3 dans l'url $s
  parse_str($s);
  if(isset($v2) AND $v2=="") { $s=ereg_replace("&v2=", "", $s); }
  if(isset($v3) AND $v3=="") { $s=ereg_replace("&v3=", "", $s); }
 
  $urlin=array("'index.php'",
  "'?r=([a-z]*)'",
   "'&v([0-9]{1})=([-_*a-z0-9]*)'",
   "'&fen=([_*a-z]*)'",
   "'&lettre=([A-Z]{1})'");

  $urlout=array("",
  "\1",
   "/\2",
   "/fen_\1",
   "/\1/");

  $s = preg_replace($urlin, $urlout, $s);
  $longueur=strlen($s);
  $dernier_car=substr($s,$longueur-1,$longueur);
  //echo $s;

  if($dernier_car!="/" AND $dernier_car!="") { $s.=".html"; }
 }

 return ROOT_URL."/".$s;
}

/*-----------//fin//------------*/

Donc l'idée est d'effacer les variables vides qui empêchent l'ajout de la chaîne ".html" dans la réécriture de l'UR, à cause de la seconde parenthèse capturante de &v2="" qui étant vide, est remplacée par "/").

L'autre post n'étant plus nécessaire, ni la modification proposée, merci de vous reporter à celui-ci.


Résolution d'un bug dans l'URL rewriting
mer 21 oct 09 à 02:38

Amélioration de la fonction convert_url() pour des raisons de compatibilité avec le File Manager (gestion de fichiers).

/*---------- // Modif //----------*/

function convert_url($s,$c=URL_REWRITE)
{
 if(isset($_GET['fen']) AND $_GET['fen']=="pop") { $s.="&fen=pop"; }
 if(isset($_GET['current_folder']) AND $_GET['current_folder']!="") { $s.="&current_folder=".$_GET['current_folder']; }
 
 //if((ADMIN!=1 AND $c==1) OR (ADMIN==1 AND URL_REWRITE==1 AND $c==2))  // si c'est un admin, pas besoin de convertir
 if(($c==1) OR (URL_REWRITE==1 AND $c==2)) {
 // Modif JB -> suppression des valeurs nulles pour v2 et v3 en parsant l'url $s + exception pour le File Manager
  parse_str($s);
 if(isset($v1) AND $v1=="file_manager") {
     return ROOT_URL."/".$s;
     exit();
     }
 if(isset($v2) AND $v2=="") { $s=ereg_replace("&v2=", "", $s); }
 if(isset($v3) AND $v3=="") { $s=ereg_replace("&v3=", "", $s); }
 
  $urlin=array("'index.php'",
  "'?r=([a-z]*)'",
   "'&v([0-9]{1})=([-_*a-z0-9]*)'",
   "'&fen=([_*a-z]*)'",
   "'&lettre=([A-Z]{1})'");

  $urlout=array("",
  "\1",
   "/\2",
   "/fen_\1",
   "/\1/");

  $s = preg_replace($urlin, $urlout, $s);
  $longueur=strlen($s);
  $dernier_car=substr($s,$longueur-1,$longueur);

  if($dernier_car!="/" AND $dernier_car!="") { $s.=".html"; }
 }

 return ROOT_URL."/".$s;
}

/*---------- // Fin modif //----------*/