Erreur 404 UrlRewRiting

Résolu/Fermé
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 24 déc. 2012 à 12:36
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 25 déc. 2012 à 11:55
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

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
24 déc. 2012 à 14:20
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
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
Modifié par jiantox le 24/12/2012 à 17:11
Merci à toi,

ça fonctionne parfaitement avec ceci :

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

=) merci encore
0
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
Modifié par jiantox le 24/12/2012 à 17:15
ah non en fait pas dutout, pour lui la valeur de a c'est index.php ...

ma variable a contient des chiffres uniquement
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
25 déc. 2012 à 11:43
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
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 114
25 déc. 2012 à 11:55
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