Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Dreamgratuit - Philosophie
15 juin 2008

Tutorial URL rewriting de A à Z avec Dreamweaver et PHP/MySQL - Part 2

La première tâche à effectuer pour faire l'URL rewriting avec des mots-clés va consister à intégrer à votre base de données, pour la ou les tables qui vous intéressent, une nouvelle colonne qui contiendra les mots clés "url friendly" de votre URL.

Que signifie "url friendly" ? Pour être "acceptable", une URL ne doit pas contenir de caractères accentués, ni d'espace, ni de caractères spéciaux tels que les points d'interrogation, d'exclamation, etc. Si vous ne pouvez utiliser l'espace comme séparateur de mot, Olivier Duffez recommande le tiret "-" (et surtout pas le underscore "_" !), voire la virgule, la barre verticale ou le slash "/".

Pour créer ces URL friendly, vous avez deux possibilités :

  • renseigner "à la main" la colonne dans votre base de données qui contiendra l'URL en ajoutant un champ à votre formulaire PHP
  • créer automatique ces url en reprenant le titre de vos articles qui sont en principe susceptibles de contenir les mots clés les plus pertinents pour votre article

Nota : cette deuxième solution est disponible en standard pour Wordpress lorsqu'on active l'URL Rewriting et c'est celle qui est expliquée ici.

Ce qui suit vous explique comment insérer automatiquement un contenu à une colonne url_friendly lors de l'insertion de nouveaux articles dans une table "actualités" .Si votre base de données contient déjà des enregistrements, il vous faudra peupler cette colonne manuellement ou créer un script vous permettant de le faire.

Entrons maintenant dans le vif du sujet… Ouvrez PHPMyAdmin et ajouter à votre table une colonne que vous nommerez URL_FRIENDLY. Voici quant à moi, la requête SQL que j'ai utilisé pour cet exemple :

ALTER TABLE `actualite` ADD `url_friendly` VARCHAR( 255 ) AFTER `id_actu` ;

Ouvrez maintenant la page de votre site contenant le formulaire d'insertion d'articles dans votre table "actualite".  Placez votre curseur avant la ligne $insertSQL = […]. Nous allons d'abord créer une fonction pour substituer aux caractères accentués leur équivalent non accentués :

// URL Rewriting : ajout de l'URL dans URL_FRIENDLY
// ************************************************
// D'abord fonction pour ôter les accents
function suppAccents($url) {
return( strtr( $url,
"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
"AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
}

Nous allons maintenant appliquer différent traitement à l'URL pour qu'elle soit conforme à notre attente :

// Puis on applique les traitements
$nomPage = $_POST['titre']; // ici on définit la variable $nomPage avec le contenu du champ titre de la page
$nomPage = suppAccents($nomPage); // suppression des accents par le truchement de la fonction citée plus haut
$nomPage = strip_tags($nomPage); // ce traitement permet de supprimer d'éventuelles insertions malveillantes de code HTML ou PHP dans le cas ou le formulaire est public.
$speciaux = array("?","!","@","%","&","*","(",")","=","+"," ",";",":","'","."); // Mettez ici les caractères spéciaux qui seraient susceptibles d'apparaître dans les titres. La liste ci-dessus est indicative
$nomPage = str_replace($speciaux, "-", $ nomPage); // les caractères spéciaux dont les espaces sont remplacés par un tiret
// Fin Url Rewriting

Allez maintenant dans la portion de code permettant l'insertion des données et modifiez comme suit :

$insertSQL = sprintf("INSERT INTO actualite (date_actu, titre, texte, image, auteur, url_friendly) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['date_actu'], "date"),
                       GetSQLValueString($_POST['titre'], "text"),
                       GetSQLValueString($_POST['texte'], "text"),
                       GetSQLValueString($_POST['image'], "text"),
                       GetSQLValueString($_POST['auteur'], "text"),
                       GetSQLValueString($nomPage, "text"));

C'est fini pour la partie création de l'URL. Faites un test d'insertion, ça devrait marcher  !

Publicité
Commentaires
S
Une question : Pour les articles déjà dans la BDD, faut-il inserer manuellement tous les "url_friendly" manuellement, où y a t'il une solution pour récuperer les titres (qui sont dans un champ "titre" de la base, et les transformer en "url_friendly") ?<br /> Car éditer manuellement plus de 1000 articles, ça risque de prendre du temps :(
D
Merci à tous de votre fidélité à ce site. Je reviens très vite avec la suite de ce tutorial...
G
Superbe article. Maintenant qu'on a intégré url_friendly dans la bdd, comment l'utiliser dans le .htaccess ?? Vite la suite
F
Excellent ton article, j'avais mis en fav mais jviens de réaliser qu'il manquait une bonne partie ;)<br /> <br /> C'est pour quand la 3e partie ?
Archives
Publicité
Publicité