Problème de réécriture de lien

  • Auteur de la discussion Auteur de la discussion blaize21
  • Date de début Date de début
Nouveau WRInaute
Bonjour!

j'essaye de mettre en place un système d'url-rewriting pour mon projet de fin d'année, la mise en place du fichier htaccess est ok mais j'ai un problème avec ma fonction qui me sert à réecrire les liens de mes pages

Tout se passe bien, les liens sont parfaitement réécris sauf lorsque le n° de la page est supérieur ou égale à 10, dans ce cas là, j'obtiens cette url:
testurl-1.html0 à la place de testurl-10.html

Je ne comprends pas pourquoi le deuxième chiffre se retrouve à la fin de ma chaine et j'ai eu beau retourner le problème dans tous les sens, je ne comprends pas...

Voici le code qui me permet de réécrire les liens de mes pages:
Code:
$contents = ob_get_contents();
ob_end_clean();

if (preg_match_all(
    "#index.php\?page=([0-9]+)#si",
    $contents,
    $matches,
    PREG_SET_ORDER))
{
    foreach($matches as $match){
        $pattern = $match[0];
        $row_id = $match[1];
     
         //schéma de la nouvelle url: testurl-n°_de_la_page
         $new_url ="testurl-".$row_id.".html";
         $contents = str_replace($pattern, $new_url, $contents);
    }
}
echo $contents

Pour le htaccess:

Code:
RewriteRule ^testurl-([0-9]+)\.html$ index.php?page=$1 [L]

Si quelqu'un a une explication/solution, elle est vraiment la bienvenue!!!

Merci d'avance
 
Nouveau WRInaute
Je crois avoir compris d'où vient le problème!

Il vient de l'utilisation des expressions régulières dans mon preg_match_all!

Par contre, je ne vois pas trop comment m'en sortir:

-> "#index.php\?page=([0-9]+)#si" ---> réecriture correcte des liens de la page 1 à 9

-> "#index.php\?page=([0-9][0-9]+)#si" ---> réecriture correcte des liens de la page 10 à 19 (mais des 9 premières)

Comment faire pour que toute suite de nombres soit pris en compte???

Sachant que "#index.php\?page=(.*)#si" ou "#index.php\?page=([0-9].*)#si" ne fonctionnent pas correctement...

A s'arracher les cheveux...
 
Discussions similaires
Haut