URL Rewriting qui fonctionne pas

  • Auteur de la discussion Auteur de la discussion sam_1421
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Je viens de mettre en place une règle d'URL Rewriting, mais elle me donne toujours une erreur 404. Voici le code :

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^chapitre([0-9]+)-(-[a-zA-Z]*)\.(htm|html|php)$  afficher_chapitre.php?num_chap=$1&title=$2  [L]

Ma page php :
Code:
<table id="header_chapters_list">
        <tr>
        <td id="center">
        <span id="entete_menu">Liste des chapitres</span>
        </td>
        </tr>
</table>
<table id="contenu_chapters_list">
        <tr>
                <?php

                $array = mysql_query('SELECT * FROM chapitres ORDER BY num_chap DESC');
                while ($donnees = mysql_fetch_array($array))
                {
                $titre = stripslashes($donnees['titre']);
                $titre_url = url_title($titre); ?>
                <td>
                Chapitre <?php echo $donnees['num_chap']; ?> : <a href="chapitre<?php echo $donnees['num_chap']; ?>-<?php echo "$titre_url"; ?>
                .html"><?php echo stripslashes($donnees['titre']); ?></a>
                </td>
        </tr><?php } ?>
</table>

Ma fonction url_title()
Code:
<?php

function url_title($chaine)
{

$urltitle = strtr( $chaine, " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]'~$&%*@ç!?;,:/^¨€{}|+-.", "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------------E------");   

$urltitle = strtolower(ereg_replace("[-]{2,}", "-",  $urltitle));
return $urltitle;
       
}

?>
Donc par exemple "titre de l'article" devient titre-de-l-article ...

Je ne vois pas trop d'où vient le problème ; le mod_rewrite est bien fonctionnel, j'ai plusieurs autres pages qui fonctionnent à l'URL Rewriting. Je crois que le problème vient de ma règle, mais je suis pas trop certain ... Voyez-vous d'où ça vient ?

Merci !

Sam
 
Nouveau WRInaute
sam_1421 a dit:
Bonjour,

Je viens de mettre en place une règle d'URL Rewriting, mais elle me donne toujours une erreur 404. Voici le code :

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^chapitre([0-9]+)-(-[a-zA-Z]*)\.(htm|html|php)$  afficher_chapitre.php?num_chap=$1&title=$2  [L]

Ma page php :
Code:
<table id="header_chapters_list">
        <tr>
        <td id="center">
        <span id="entete_menu">Liste des chapitres</span>
        </td>
        </tr>
</table>
<table id="contenu_chapters_list">
        <tr>
                <?php

                $array = mysql_query('SELECT * FROM chapitres ORDER BY num_chap DESC');
                while ($donnees = mysql_fetch_array($array))
                {
                $titre = stripslashes($donnees['titre']);
                $titre_url = url_title($titre); ?>
                <td>
                Chapitre <?php echo $donnees['num_chap']; ?> : <a href="chapitre<?php echo $donnees['num_chap']; ?>-<?php echo "$titre_url"; ?>
                .html"><?php echo stripslashes($donnees['titre']); ?></a>
                </td>
        </tr><?php } ?>
</table>

Ma fonction url_title()
Code:
<?php

function url_title($chaine)
{

$urltitle = strtr( $chaine, " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]'~$&%*@ç!?;,:/^¨€{}|+-.", "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------------E------");   

$urltitle = strtolower(ereg_replace("[-]{2,}", "-",  $urltitle));
return $urltitle;
       
}

?>
Donc par exemple "titre de l'article" devient titre-de-l-article ...

Je ne vois pas trop d'où vient le problème ; le mod_rewrite est bien fonctionnel, j'ai plusieurs autres pages qui fonctionnent à l'URL Rewriting. Je crois que le problème vient de ma règle, mais je suis pas trop certain ... Voyez-vous d'où ça vient ?

Merci !

Sam



Code:
<table id="header_chapters_list">
        <tr>
        <td id="center">
        <span id="entete_menu">Liste des chapitres</span>
        </td>
        </tr>
</table>
<table id="contenu_chapters_list">
        <tr>
                <?php

                $array = mysql_query('SELECT `titre`,`num_chap` FROM chapitres ORDER BY num_chap DESC');
                while ($donnees = mysql_fetch_array($array))
                {
                $titre = stripslashes($donnees['titre']);
                $titre_url = url_title($titre); ?>
                <td>
                Chapitre <?php echo $donnees['num_chap']; ?> : <a href="chapitre<?php echo $donnees['num_chap']; ?>-<?php echo "$titre_url"; ?>
                .html"><?php echo stripslashes($donnees['titre']); ?></a>
                </td>
        </tr><?php } ?>
</table>

deja, ensuite dans ta fonction

Code:
<?php

function url_title($chaine)
{

$urltitle = strtr( $chaine, " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]'~$&%*@ç!?;,:/^¨€{}|+-.", "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------------E------");   

$urltitle = strtolower(ereg_replace("-{2,}", "-",  $urltitle));
return $urltitle;
       
}

?>


et pour finir :

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^chapitre([0-9]+)-([a-zA-Z0-9\-]*)\.(htm|html|php)$  afficher_chapitre.php?num_chap=$1&title=$2  [L]
 
Nouveau WRInaute
Merci pour ta réponse !

J'ai fait les modifications, mais maintenant les liens donne ceci : hapitre4-l-interview%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.html (les %20 étant des espaces dans le lien sur la page) ... Tu sais d'où vient cette erreur ?

Merci !
Sam
 
Nouveau WRInaute
sam_1421 a dit:
Merci pour ta réponse !

J'ai fait les modifications, mais maintenant les liens donne ceci : hapitre4-l-interview%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.html (les %20 étant des espaces dans le lien sur la page) ... Tu sais d'où vient cette erreur ?

Merci !
Sam

hum c'est etonnant, essaye
Code:
<?php

function url_title($urltitle)
{

$urltitle = strtr( $urltitle, " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]'~$&%*@ç!?;,:/^¨€{}|+-.", "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------------E------");   

$urltitle = str_replace(' ','-',$urltitle);

$urltitle = strtolower(ereg_replace("-{2,}", "-",  $urltitle));
return $urltitle;
       
}

?>
 
Nouveau WRInaute
Je l'avais pas lue en entier

Code:
<table id="header_chapters_list">
        <tr>
        <td id="center">
        <span id="entete_menu">Liste des chapitres</span>
        </td>
        </tr>
</table>
<table id="contenu_chapters_list">
        <tr>
                <?php

                $array = mysql_query('SELECT `titre`,`num_chap` FROM chapitres ORDER BY num_chap DESC');
                while ($donnees = mysql_fetch_array($array))
                {
                <td>
                Chapitre <?php echo $donnees['num_chap']; ?> : <a href="chapitre<?php echo $donnees['num_chap']; ?>-<?php echo str_replace(' ','-',url_title($donnees['titre'])); ?>
                .html"><?php echo stripslashes($donnees['titre']); ?></a>
                </td>
        </tr><?php } ?>
</table>

Si la ca ne marche pas ... je comprend pas :D (envois directement l'url de la page apres, si ca ne marche toujours pas)
 
Nouveau WRInaute
J'ai tout remis comme avant, mais ça ne fonctionne toujours pas ! J'ai toujours une quinzaine d'espaces après mon titre ... Pourtant j'ai tout remis comme c'était avant ...
 
WRInaute accro
sam_1421 a dit:
J'ai tout remis comme avant, mais ça ne fonctionne toujours pas ! J'ai toujours une quinzaine d'espaces après mon titre ... Pourtant j'ai tout remis comme c'était avant ...

Tu ne peux pas t'en sortir en faisant bêtement un trim à la fin?
 
Nouveau WRInaute
C'est bon, j'ai résolu, les espaces étaient dues à je ne sais quoi, mais j'ai réécrit le code et c'était ok, et il y avait un tiret de trop dans mon htaccess !

Merci pour votre aide !
 
Discussions similaires
Haut