Et avec un titre comment faire ??

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

JohnAtthane
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 19 Nov 2011

Et avec un titre comment faire ??

Message le Sam Nov 19, 2011 20:46

Bonjour à tous,

Après qu'Olivier Duffez m'ait répondu en me disant que c'était possible, mais comme en lisant le tuto ici http://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting je n'ai absolument rien compris je viens à vous :)

J'ai déjà lu pas mal de forums, tuto et je n'arrive pas à trouver une réponse.

Voici l'url d'une de mes news : http://www.bordeauxpaquebots.com/news.php?id=37 dont le titre est "Point sur les escales 2012"

Je souhaiterais donc voir dans l'url quelquechose du genre http://www.bordeauxpaquebots.com/37-Point-sur-les-escales-2012

Enfin le but est qu'il y ait un titre.

Quelqu'un pourrait il m'expliquer donc comment faire la manipulation ?

Merci à vous

JohnAtthane
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 19 Nov 2011

Re: Et avec un titre comment faire ??

Message le Sam Nov 19, 2011 22:15

Désolé du double post, mais j'ai trouvé quelquechose qui ne marche qu'à 50%

J'ai relu tous les commentaires du tutos, et appliqué un: voici mon htaccess

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^news-(.+)-([0-9]+).html$ /news.php?id=$2 [L]

Les problèmes sont:

-Que j'écrive cela http://www.bordeauxpaquebots.com/news-tralalalalala-37.html ou http://www.bordeauxpaquebots.com/news-nimportequoi-37.html , la news s'affiche

- Sur ma page d'index, si on clique sur le titre de la news, l'url affiché est toujours http://www.bordeauxpaquebots.com/news.php?id=37 et non avec le titre ;(


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Et avec un titre comment faire ??

Message le Dim Nov 20, 2011 10:31

Salut JohnAtthane,

L'url rewriting demande un peut plus de manipulations qu'un simple fichier .htaccess à remplir. Je ne suis pas très doué dans le domaine mais je vais quand même tenter de t'orienter.

Dans un premier temps, il faut transmettre en "GET" les bonnes variables. Pour le moment tu ne transmet que "id" » "news.php?id=37". Il faut transmettre également le titre de la page avec une variable "titre" par exemple » "news.php?id=37&titre=Point sur les escales 2012".

Ensuite, dans ta page de destination, tu récupères le tout :
Code: Tout sélectionner
$id=$_GET["id"];//correspond à 37
$titre=$_GET["titre"];// correspond à "Point sur les escales 2012"


On s’oriente maintenant vers le fichier .htaccess :
Code: Tout sélectionner
RewriteEngine on
RewriteBase /

RewriteRule  ^([0-9]*)-(.*)\.php$  news.php?id=$1&titre=$2 [L]

Cette règle indique qu'il faut ré écrire "news.php?id=37&titre=Point sur les escales 2012" en "37-Point sur les escales 2012.php".

Comme tu le constates, le titre n'est pas ré écrit correctement, il faut donc ajouter une fonction qui transforme le titre en supprimant les espaces, passer les majuscules en minuscules, etc...

Dans un fichier "fonctions.php appelé par une "include" ou directement dans le fichier de destination :
Code: Tout sélectionner
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-Za-z0-9]#','-',$chaine);

   // Remplace les tirets multiples par un tiret unique
   $chaine = ereg_replace( "\-+", '-', $chaine );
   // Supprime le dernier caractère si c'est un tiret
   $chaine = rtrim( $chaine, '-' );

    while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);

    return $chaine;
}


Actuellement tes liens sont sous la forme :
Code: Tout sélectionner
<a href="http://www.bordeauxpaquebots.com/news.php?id=37">Point sur les escales 2012</a>

et doivent avoir un code à peut près similaire à :
Code: Tout sélectionner
<a href="http://www.bordeauxpaquebots.com/news.php?id=<?php echo $id;?>"><?php echo $titre;?></a>

Il faut donc modifier tout tes liens de la façon suivante :
Code: Tout sélectionner
<a href="http://www.bordeauxpaquebots.com/<?php echo $id;?>-<?php echo OptimiseUrl($titre);?>.php"><?php echo $titre;?></a>

Dans cet exemple, la variable "$titre" associé à la fonction "OptimiseUrl" » "OptimiseUrl($titre)" donne comme résultat » "point-sur-les escales-2012".
L'action cumulé du fichier .htaccess + fonction OptimiseUrl + modification des liens donne comme résultat une url du type :
Code: Tout sélectionner
http://www.bordeauxpaquebots.com/37-point-sur-les-escales-2012.php


Dans le même style : Url rewriting du site dynamique
En espérant t'avoir aidé..

JohnAtthane
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 19 Nov 2011

Re: Et avec un titre comment faire ??

Message le Dim Nov 20, 2011 14:00

Salut,

Merci de ton aide. J'ai bien compris la fin, mais pas le début. Le
Code: Tout sélectionner
$titre=$_GET["titre"];
doit se mettre où?

Sur ma page news.php j'ai cela:

Code: Tout sélectionner
<?php
   
   /*
   Connexion à la BDD
   */
   me identifs
   
   /*
   Affichage d'une news en particulier
   */
   if(isset($_GET['id'])){
   
      $id = intval(htmlentities($_GET['id']));
      /*
      Si l'id !=0, intval renvoie quelque chose de bon
      */
      if($id != 0){
         
         $sql = 'SELECT * FROM news WHERE id='.$id.'';
         $req = mysql_query($sql) or die(mysql_error());
         $data = mysql_fetch_assoc($req);
         
         echo '<h1 class="news">'.stripslashes($data['titre']).'</h1>';
         echo '<div class="fond_contenu">';
         echo '<p class="date"> écrit le : '. date("d/m/Y G:i",strtotime ($data['timestamp'])).'</p>';
         echo '<p class="fond_contenu">'.(stripslashes($data['contenu'])).'</p>';
         echo '</div>';
         
         
      }
      /*
      id ==0, intval renvoie certainement qqch de faux
      */
      else
      {
         echo "Erreur";
      }
   
   }
   
      
   /*
Listage des 5 dernières news
   */
   else
   {
   
   $sql = 'SELECT * FROM news ORDER BY id DESC LIMIT 0,10';
   $req = mysql_query($sql) or die(mysql_error());
   
   echo '<h1></h1>';
   
   while($data = mysql_fetch_assoc($req)){
            ?>
      <div>
      <h2 class="news"><a href="news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a><span class="date">écrit le: <?php echo date("d/m/Y G:i", strtotime ($data['timestamp'])); ?></span></h2>
        <div class="fond_contenu"><!--  Cadre News --><p><strong><?php echo stripslashes($data['description']); ?></strong></p></div><!--  Fin Cadre de News -->
        <p>&nbsp;</p>
     </div>
      <?php
      
   }
      
   }
   
   
   ?>



J'ai bien tenté de le mettre sous
Code: Tout sélectionner
$id = intval(htmlentities($_GET['id']));
mais le lien reste seulement l'ID. Je pense donc qu eje le met à la mauvaise place


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Et avec un titre comment faire ??

Message le Dim Nov 20, 2011 20:18

Salut,

Sur ta page d'accueil, il faut que tu ajoutes dans un premier temps le titre sur tes urls pour que ça donne un truc du style "id-titre.php".
Code: Tout sélectionner
<a href="<?php echo $data['id']; ?>-<?php echo OptimiseUrl($data['titre']);?>.php"><?php echo stripslashes($data['titre']);?></a>

N'oublie pas la fonction à insérer dans ton fichier...

Dans ton fichier news.php après
Code: Tout sélectionner
$id = intval(htmlentities($_GET['id']));

tu ajoutes
Code: Tout sélectionner
$titre = htmlspecialchars($_GET["titre"]);

Dans le listage des 5 dernières news, tu modifies la ligne
Code: Tout sélectionner
<a href="news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a>

en
Code: Tout sélectionner
<a href="<?php echo $data['id']; ?>-<?php echo OptimiseUrl($data['titre']);?>.php"><?php echo stripslashes($data['titre']);?></a>

JohnAtthane
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 19 Nov 2011

Re: Et avec un titre comment faire ??

Message le Mar Nov 22, 2011 13:28

Salut,

Merci beaucoup, là j'ai compris !!
Je tente se soir en rentrant de la fac et je dirais si ça fonctionne. Mais ça devrait le faire, merci beaucoup !!


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités