[URL REWR.] Petit code pour avoir le titre d'une page en url

  • Auteur de la discussion Auteur de la discussion SuperPJ
  • Date de début Date de début
WRInaute occasionnel
Pour améliorer le référencement et surtout le positionnement de vos pages sur Google vous pouvez remplacer toutes vos url du type "article.php?id=1" par "titre-de-l-article-1.html".

Pour ce faire vous devez remplacer ça :

Code:
// *************** FONCTION PRINCIPALE *************** //

$sql = mysql_query("SELECT id,titre FROM table_articles");

while ( $resultat = mysql_fetch_array($sql,MYSQL_ASSOC) )
{
	echo "<A HREF=\"article.php?id=$resultat[id]\">$resultat[titre]</A><BR>\n";
}


// ******************* TEXTE GENERE ******************* //
//
// <A HREF="article.php?id=1">Plus que jamais, la guerre fait rage entre les moteurs de recherche</A>
// <A HREF="article.php?id=4">Classement général des moteurs de recherche en 2004</A>
// <A HREF="article.php?id=7">Quels sont les atouts de Mozbot face à Google, Yahoo et MSN Search =)</A>


... par ça :

Code:
// **** LES 2 FONCTIONS SONT A METTRE DE PREFERENCE DANS UN INCLUDE **** //

// Procédure qui définit les paramètres de conversion
function title_to_file_info ()
{
	// Extension des noms de fichiers qui vont être générés
	$extension = '.html';
	// Nombre maximum de caractères que comportera le nom de fichier généré
	$caracteres = 50;
	// Dans le nom de fichier généré, remplacer ces caractères ...
	$car_speciaux = array( 'à','â','ä','È','É','é','è','ê','ë','î','ï','ô','ù','û','ç' );
	// ... par ceux-ci
	$car_normaux = array( 'a','a','a','E','E','e','e','e','e','i','i','o','u','u','c' );

	// Retourner les variables à la fonction principale "title_to_file()"
	return array( $extension, $caracteres, $car_speciaux, $car_normaux );
};


// Fonction principale
function title_to_file ( $id, $titre )
{
	// On récupère les variables
	list( $extension, $caracteres, $car_speciaux, $car_normaux ) = title_to_file_info();
	
	// Supprime de $titre les accents, trémas et cédilles
	$fichier = str_replace($car_speciaux, $car_normaux, $titre);
	// Convertit en minuscules
	$fichier = strtolower( $fichier );
	// Remplace les caractères non-alphanumériques par des tirets
	$fichier = eregi_replace( "[^A-Za-z0-9]", '-', $fichier );
	// Remplace les tirets multiples par un tiret unique
	$fichier = ereg_replace( "\-+", '-', $fichier );
	// Supprime le dernier caractère si c'est un tiret
	$fichier = rtrim( $fichier, '-' );
	// Limite la chaine aux $caractères premiers caractères
	$fichier = substr( $fichier , 0, $caracteres );
	// Applique l'extension au nom de fichier ainsi obtenu
	$fichier = "$fichier-$id$extension";
	
	// Retourner le nom de fichier obtenu
	return $fichier;
}

// ************************ FIN DES 2 FONCTIONS ************************ //



// *************** FONCTION PRINCIPALE *************** //

$sql = mysql_query("SELECT id,titre FROM table_articles");

while ( $resultat = mysql_fetch_array($sql,MYSQL_ASSOC) )
{
	echo "<A HREF=\"".title_to_file($resultat['id'],$resultat['titre'])."\">$resultat[titre]</A><BR>\n";
}


// ******************* TEXTE GENERE ******************* //
//
// <A HREF="plus-que-jamais-la-guerre-fait-rage-entre-les-mote-1.html">Plus que jamais, la guerre fait rage entre les moteurs de recherche</A>
// <A HREF="classement-general-des-moteurs-de-recherche-en-200-4.html">Classement général des moteurs de recherche en 2004</A>
// <A HREF="quels-sont-les-atouts-de-mozbot-face-a-google-yaho-7.html">Quels sont les atouts de Mozbot face à Google, Yahoo et MSN Search =)</A>


Puis dans le .htaccess vous faîtes :
Code:
RewriteEngine on
RewriteRule -([0-9]+)\.html$  /article.php?id=$1 [L]

_________________________________________________

C'est ce que j'ai fait pour mon annuaire MyPhpAnnuaire -http://annuaire.audiencestv.com et ça aide pas mal au niveau du référencement Google :P
 
WRInaute impliqué
merci beaucoup de proposer cette solution.
à ton avis, quelle est l'incidence:
- de placer l'id en fin d'url et non pas au début (style "34-titre-de-la-page.html) ?
- d'ajouter ".html" Pourquoi ne pas laisser "www.dom.com/titre-de-la-page-34/"

Super contribution en tout cas.
 
WRInaute occasionnel
Tilt a dit:
Super contribution en tout cas.
Merci :oops:
A ton avis, quelle est l'incidence:
- de placer l'id en fin d'url et non pas au début (style "34-titre-de-la-page.html) ?
Au niveau de Google honnêtement je n'en ai aucune idée. Je ne sais pas s'il référence mieux dans un cas que pour l'autre. Pour autant je trouve que mettre l'id à la fin c'est mieux au niveau de l'utilisateur humain qui lira l'url.

- d'ajouter ".html" Pourquoi ne pas laisser "www.dom.com/titre-de-la-page-34/"
Là encore tu as raison, on pourrait simplement simuler un répertoire. Même si personnellement je préfère garder un nom de fichier ".html" pour la simple raison que les articles sont en fait des fichiers.
 
Discussions similaires
Haut