Erreur 404 UrlRewRiting

Résolu
jiantox Messages postés 1159 Statut Membre -  
jiantox Messages postés 1159 Statut Membre -
bonjour,

voilà je n'y ai jamais rien pigé à comment bien faire tourner une urlrewriting..

le .htaccess est dans le dossier "annonce".

RewriteEngine on
RewriteRule ^(.*)/$ /annonce/index.php?a=$1 [L]

www.monlien.truc/annonce/variable me donne une 404 :/.

Il y a quoi qui bug ?

Merci à vous d'avance

2 réponses

  1. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
     
    Salut,

    L'url rewriting ce n'est pas juste un bout de code à coller dans un fichier ".htaccess" surtout quand les pages contiennent des paramètres..!

    RewriteEngine on
    RewriteBase /annonce/
    RewriteRule  ^(.*)/?$  index.php?a=$1 [L] 


    Si je ne me plante pas trop, avec le code ci-dessus vous indiquez à la suite de "RewriteBase" le répertoire visé par l'url rewriting et vous indiquez la méthode de ré écriture à la suite de "RewriteRule".

    Pour faire fonctionner correctement l'url rewriting, il faut dans un premier temps une fonction de ré écriture :
    function OptimiseUrl($chaine)
    {    
    
        $chaine=strtolower($chaine);
        
        $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
        $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
        
        $chaine = preg_replace($accents, $sans,$chaine);  
        
        $chaine = preg_replace('#[^a-z0-9-]#','-',$chaine);
        while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
        
        return $chaine; 
    }

    ...et dans un second temps, il faut également modifier tout les liens qui utilisent cette règle.

    Ainsi :
    <a href="index.php?a=<?php echo $ma_variable;?>"><?php echo $ma_variable;?></a>

    devient :
    <a href="<?php echo OptimiseUrl($ma_variable);?>"><?php echo $ma_variable;?></a>


    La variable "$ma_variable" est donc passé à la moulinette dans la fonction "OptimiseUrl()" pour supprimer/remplacer tout caractères/espaces afin que la règle définit dans le fichier ".htaccess" puisse être utilisé correctement.

    Note : non testé mais dans les grosses lignes c'est ça.
    0
  2. jiantox Messages postés 1159 Statut Membre 115
     
    Merci à toi,

    ça fonctionne parfaitement avec ceci :

    RewriteEngine on
    RewriteBase /annonce/
    RewriteRule ^(.*)/?$ index.php?a=$1 [L]

    =) merci encore
    0
    1. jiantox Messages postés 1159 Statut Membre 115
       
      ah non en fait pas dutout, pour lui la valeur de a c'est index.php ...

      ma variable a contient des chiffres uniquement
      0
    2. tryan44 Messages postés 1289 Date d'inscription   Statut Membre Dernière intervention   220
       
      A tester :
      RewriteRule  ^([0-9]*)\.php$  index.php?a=$1 [L]

      <a href="<?php echo OptimiseUrl($ma_variable);?>.php"><?php echo $ma_variable;?></a>

      Ceci dit, je ne vois pas l'intérêt de faire de l'url rewriting uniquement pou y passer des chiffres?
      0
    3. jiantox Messages postés 1159 Statut Membre 115
       
      pour avoir des liens plus court et virer le "?a=" tout moche.

      je vais tester ceci :) sinon je ferais autre chose ^^

      Merci à toi pour ton aide :) et joyeux noel
      0