mick38 Posté 30 Mars 2010 Posté 30 Mars 2010 Bonjour, A plusieurs reprises captain_torche fait allusion à l'utilisation d'une table de correspondance afin de gérer au mieux la réécriture d'URL, l'absence de l'id dans cette nouvelle URL, et le fait d'avoir une URL unique pour éviter le duplicate content. http://www.webmaster-hub.com/topic/41413-des-mots-cles-dans-lurl/page__p__270651entry270651 http://www.webmaster-hub.com/topic/47992-vos-conseils-pour-la-reecriture/page__p__313048entry313048 http://www.webmaster-hub.com/topic/43415-google-naime-pas-lurl-rewriting/page__st__40__p__285395entry285395 Quelqu'un pourrait-il m'éclaircir à ce sujet ? S'agit-t-il de 2 tables liées dans mySQL ou bien de tableaux gérés en php et générés à partir de données récupérées en base ? Quelle est la bonne pratique lors de la réécriture dans le htaccess, une variable du genre $monNomDeFichier à la place de $id ? Merci d'avance, Mick
captain_torche Posté 30 Mars 2010 Posté 30 Mars 2010 Je suis le premier concerné, je m'explique donc derechef Dans ma structure de base de données, j'ai une table urls, composée de la manière suivante : - un identifiant - un type de page - un id cible - une url Imaginons que mon site soit basé sur une hiérarchie "articles / rubriques". Ma première rubrique aura comme titre "Rubrique numéro 1". Grâce à la fonction pour transformer un texte en url, il devient "rubrique-numero-1". J'enregistre ces informations dans ma base de la manière suivante : - type de page : rubrique - id cible : 1 - url : rubrique-numero-1 Je fais de même avec le reste des pages. Pour l'article numéro 24, titré "mon super article de test !", on aura donc : - type de page : article - id cible : 24 - url : mon-super-article-de-test Il faut ensuite, via le .htaccess, rediriger toutes ces urls vers une seule et même page (Ici, traitement.php) : RewriteRule (.*)\.html$ traitement.php?url=$1 [QSA,L] Cette page fera quant à elle l'opération inverse : Si on lui fournit l'url "mon-super-article-de-test", elle est capable, avec une simple requête, de trouver quel type de page afficher (ici, un article), ainsi que son identifiant (24). Le reste est relativement simple On peut même envisager encore mieux : imaginons que je renomme cette dernière page en "mon-super-article". On va également modifier l'url en conséquence. Mais plutôt que de modifier l'url déjà en base, on va en créer une autre : - type de page : article - id cible : 24 - url : mon-super-article Tant qu'on n'en reste que là, on peut accéder au même contenu avec l'url "mon-super-article-de-test.html" et avec "mon-super-article.html". Il faut donc faire en sorte de rediriger l'ancienne url vers la nouvelle, de façon automatique. On va ajouter dans notre page de traitement, le code suivant (On aura au préalable renseigné les variables $id_cible et $type_page avec les informations de l'url en cours) : $sql_redirect = "SELECT url FROM urls WHERE id_cible = '$id_cible' AND type_page = '$type_page' ORDER BY ID DESC LIMIT 1";$req_redirect = mysql_query($sql_redirect) or die(mysql_error());$url_redirect = mysql_result($req_redirect, 0);if($url_redirect != $url) { header('Location: '.$url_redirect.'.html', true, 301); die();} Dans le principe : on vérifie l'url d'index le plus élevé correspondant au type de l'article ainsi qu'à son id. Si cette url est différente de celle de la page actuelle, on effectue une redirection. De cette manière, on peut renommer indéfiniment les pages, le système fonctionnera. Attention toutefois à ne pas faire cette manipulation trop fréquemment; ce serait dommageable pour le référencement et le backlinking, même si la redirection automatique limite la casse. Pour information, j'utilise cette méthode (dans une version un peu plus complexe, qui gère les différents utilisateurs) pour l'Onironaute. Et, si je ne m'abuse, c'est également ce système qui est utilisé dans les dernières versions de SPIP.
mick38 Posté 30 Mars 2010 Auteur Posté 30 Mars 2010 Que dire à part "Merci beaucoup !!!" Je n'ai plus qu'à tester ... Mick
adn Posté 30 Mars 2010 Posté 30 Mars 2010 Je fais de meme mais sans redirection et j'ai en plus dans cet index une colonne Template qui me renvoie dans différentes tables. Car la structure des articles n'est pas toujours la même Pourquoi ne gères-tu pas directement l'affichage dans traitement.php ? La redirection a un coût.
captain_torche Posté 30 Mars 2010 Posté 30 Mars 2010 L'affichage est géré directement dans le fichier de traitement; la redirection n'intervient que si l'url a été modifiée.
Le-juge Posté 30 Mars 2010 Posté 30 Mars 2010 Et voila! Merci captain ca valide une question que j'avais ... Nous utilisons un concept similaire dans ma boite pour gerer les redirections avec la creation d'une table "lookup" qui genere la redirection.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant