Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mar Aoû 16, 2016 14:46

C'est assez facile l'URL rewriting. Une paire de lignes de code dans le .htaccess.

On change

Code: Tout sélectionner
monfichier?mavariable.php=mavaleur

en
Code: Tout sélectionner
monfichier-mavariable-mavaleur.php


Mais ce qui serait bien, ce serait de pouvoir changer

Code: Tout sélectionner
monfichier?mavariable.php=mavaleur

en
Code: Tout sélectionner
le-titre-de-ma-page.php


C'est possible, puisque WordPress le fait, et aussi ce forum sous PHPBB. Il reste que ces techniques ne sont pas du tout évidentes à mettre en place pour le webmaster moyen, sur un site moyen.

Y a t-il quelque chose de nouveau pour faciliter cela ?

Annonces Google



Marie-Aude
Modérateur
Modérateur
 
Messages: 18372
Enregistré le: 5 Juin 2006

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mar Aoû 16, 2016 17:37

ça ne se fait pas dans le htaccess, mais via php en récupérant les variables ....

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mar Aoû 16, 2016 17:57

Oui, c'est ce que j'essaie de faire.
Je suis en ce moment même d'écrire le script pour ajouter un champ à ma base de données.

A partir du champ titre (ex : Le titre de ma page 2 sur le frère Jacques),
j'aurais demain (si tout va bien) un champ lien avec le-titre-de-ma-page-2-sur-le-frere-jacques.php

C'est après que cela se corse, merci pour les liens, je vais les étudier avec attention.

NicolasH
WRInaute discret
WRInaute discret
 
Messages: 72
Enregistré le: 4 Mai 2016

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 9:04

Bonjour elji,

Le titre dans l'url c'est ce qu'on appelle le slug.

Le principe :

Le rewrite va te permettre d'appeler ton script php avec comme valeur ton titre.
Le titre va être récupéré par ton script et tu vas faire une rechercher d'article par slug en bd via une requête SQL.
Le champ slug ne doit pas autoriser les doublons.
Si le résultat est nulle alors tu rediriges vers une 404. Sinon tu affiches le contenu des champs de la ligne trouvée.

PS : inutile de mettre .php à la fin, ca rallonge le titre pour rien et si un jour tu changes de techno tu devras renommer toutes tes urls.


Koxin-L.fr
WRInaute passionné
WRInaute passionné
 
Messages: 1957
Enregistré le: 15 Jan 2012

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 11:53

Slt,

Url demandée par l'internaute (et affiché sur le site) : http://www.exemple.com/mon-titre-de-page.html
Toi, tu gères tes data en base de données avec comme champs : ID | Titre | Text | Url
Code: Tout sélectionner
RewriteRule ^([-a-zA-Z0-9]+).html$ /index.php?url=$1

Tu n'a plus qu'à aller chercher les data en fonction de ta variable url que tu traite via $_GET.

Dans ton BO, via php tu gère la non duplication des url de tes articles pour qu'elles soient unique.

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 15:36

Merci pour ces réponses. Je vois beaucoup mieux le problème, même si je suis encore à la première étape.
Je n'y avais pas pensé (!), mais mon site n'est pas comme WordPress qui crée automatiquement des répertoires pour les années, et des sous-répertoires pour les mois.

Je vais me retrouver avec plus de 5000 articles avec des URLs dans un même répertoire. Mes sites parlant de voitures, il y a un risque énorme d'avoir des articles avec le même titre (ex : "La nouvelle Renault Megane"). Pour éviter tout risque, et ne pas avoir à réfléchir avant d'écrire un nouveau titre, je dois ajouter une variable unique à l'URL.

Je pense ajouter la date, et c'est simple je dois savoir le faire. Mes URLs seront donc du type :

Code: Tout sélectionner
20160817-le-titre-de-ma-page.php


Koxin-L.fr
WRInaute passionné
WRInaute passionné
 
Messages: 1957
Enregistré le: 15 Jan 2012

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 16:14

Pourquoi pas.

Après tu tape ta bdd avec une condition de recherche
Code: Tout sélectionner
WHERE url= le-titre-de-ma-page && date_publi = 20160817


Marie-Aude
Modérateur
Modérateur
 
Messages: 18372
Enregistré le: 5 Juin 2006

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 16:27

elji a écrit:Merci pour ces réponses. Je vois beaucoup mieux le problème, même si je suis encore à la première étape.
Je n'y avais pas pensé (!), mais mon site n'est pas comme WordPress qui crée automatiquement des répertoires pour les années, et des sous-répertoires pour les mois.

Ce ne sont que des règles de réécriture, à toit d'inventer les tiennes.

elji a écrit:Mes sites parlant de voitures, il y a un risque énorme d'avoir des articles avec le même titre (ex : "La nouvelle Renault Megane"). Pour éviter tout risque, et ne pas avoir à réfléchir avant d'écrire un nouveau titre, je dois ajouter une variable unique à l'URL.

L'ID de l'article est une bonne idée. Et c'est plus fenghsui que la date pour Google News si jamais ça t'intéresse.
En plus, comme l'ID est unique, ça te permet de baser ta réécriture sur un paramêtre unique, sans t'occuper du titre.
Ca ne t'empêche pas de rajouter la date dans l'url.
Mais côté SQL c'est plus léger (surtout que l'ID est normalement un index ^^)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 11987
Enregistré le: 23 Nov 2005

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 16:59

Intégrer la date dans les url c'est moche. Mieux vaut un ID our rien du tout (dans ce cas tu te bases sur le seul slug).

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 18:23

Ah ouais ? Un id serait mieux que la date ?
Bon, j'accepte ce conseil. C'est ce que je vais faire.

Marie-Aude a écrit:Mais côté SQL c'est plus léger (surtout que l'ID est normalement un index ^^)


Cela ne fera pas de différence, puisque j'ai créé un nouveau champ dans ma DB. Un champ lien, extrapolé à partir de l'ID actuel et du champ titre. La colonne contiendra les valeurs :

Code: Tout sélectionner
ID1-titre-du-premier-article.php

Code: Tout sélectionner
ID2-titre-du-second-article.php


Je suis conscient que cela alourdit ma table, mais ensuite cela me permet de faire des requetes simples (moi pas programmeur, moi aimer requêtes simples) qui seront rapides à éxécuter. Accessoirement, ce nouveau champ pourrait à terme devenir une nouvelle clé, même si je n'en ai pas besoin.

NicolasH a écrit:PS : inutile de mettre .php à la fin, ca rallonge le titre pour rien et si un jour tu changes de techno tu devras renommer toutes tes urls.


J'avais oublié de répondre à cela, c'est par habitude. Toutes mes pages depuis plus de 10 ans ont toutes l'extension .php et j'aurais l'impression qu'il y a quelque chose qui manque s'il n'y avait pas cette extension...


spout
WRInaute accro
WRInaute accro
 
Messages: 8214
Enregistré le: 14 Mai 2003

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 17, 2016 22:13

Les exemples de rewrite de ce topic utilisent des techniques de 1930 ...
http://forum.webrankinfo.com/pratique-htaccess-lire-avant-poser-t13288 ... l#p1217718

http://upshots.org/php/php-regexrouter
https://gist.github.com/dave1010/1214164
http://altorouter.com/
[...]

Pour les URLs avec un slug qui est p-e amené à changer, j'aime bien passer le couple: id et slug afin de faire une redirection 301 si le slug devait à changer. Et juste le slug si on est sûr que ça changera pas.

PS: Il n'y a pas que Apache dans la vie.


Koxin-L.fr
WRInaute passionné
WRInaute passionné
 
Messages: 1957
Enregistré le: 15 Jan 2012

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Jeu Aoû 18, 2016 14:51

spout a écrit:Les exemples de rewrite de ce topic utilisent des techniques de 1930 ...
Grotesque.
L'exemple que je donne fonctionne parfaitement bien.
A lui de gérer derrière en php pour éviter les conflit et les 404.

Et s'il le souhaite, tout faire en php.

Mais aucunement ces techniques sont dépassées.

spout a écrit:PS: Il n'y a pas que Apache dans la vie.

Il est là, autant s'en servir.

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Dim Aoû 21, 2016 11:33

Bon, j'aurais déjà fait plus de 50 tests avec différentes règles de réécriture, et j'hésite encore sur la moins pire.
J'ai en effet des titres avec "la Megane IV" ou "la Golf VII", ce qui ne rend pas trop bien en minuscules. J'ai aussi "moins de 20.000 €", et de nombreuses fois "l'hybride" ou "l'hydrogène", et je supprime l'apostrophe pour me retrouver avec un mot qui n'existe pas...

Pour règler ce problème à l'avenir, j'ai fait le choix d'un slug non dynamique. Ma difficulté actuelle est pour convertir les + de 5000 articles existants. A l'avenir, j'écrirais l'URL de mon choix en même temps que j'écrirais l'article. J'ai un champ lien dans ma BDD (c'est là que j'ai déjà créé et effacé plus de 50 fois différentes valeurs, je connais par coeur la commande pour tout effacer : UPDATE lesactus SET lien = '').

Pour la suite, il reste une chose que je comprend pas.
Je vais avoir de beaux liens du type :

Code: Tout sélectionner
/monrepertoire/monidentifiantunique-le-titre-de-ma-page.php


Mais comment faire pour que ce lien pointe vers les pages actuelles dont l'URL est de type :

Code: Tout sélectionner
/monrepertoire/monfichier.php?mavariable=mavaleur


Je peux mettre une variable "le titre de ma page" dans un GET dans la page monfichier.php mais il faut que je mette une règle de réécriture dans mon .htaccess avant cela, non ?

Merci encore à ceux qui m'aident !


spout
WRInaute accro
WRInaute accro
 
Messages: 8214
Enregistré le: 14 Mai 2003

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Dim Aoû 21, 2016 12:16

Code: Tout sélectionner
<?php
function slug($str)
{
    
$transliterator Transliterator::createFromRules("::Latin-ASCII; ::Lower; [^[:L:][:N:]]+ > '-';");
    return 
trim($transliterator->transliterate($str), '-');
}
 
$titles = [
    
"la Megane IV",
    
"la Golf VII",
    
"moins de 20.000 €",
    
"l'hybride",
    
"l'hydrogène",
];
 
foreach (
$titles as $title) {
    echo 
slug($title) . '<br>';


Code: Tout sélectionner
la-megane-iv
la-golf-vii
moins-de-20-000
l-hybride
l-hydrogene


Src: https://www.matthecat.com/supprimer-les-accents-dune-chaine-en-php/

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Dim Aoû 21, 2016 18:41

Merci pour cette réponse rapide !
Mon script modifiant une base de données, il est différent, de ce type :

$lien = preg_replace("/\s/", '-', $lien);

Mais les caractères spéciaux ne sont pas vraiment un problème. Mon souci est que je ne voudrais que des mot-clés dans mes URLs mais je me retrouve avec des "l", des "iv" et des "vii" (entre autres), bref des trucs qui n'ont aucun sens. Je suppose que ce n'est pas trop grave.

C'est pour la suite que je suis plus embêté, l'exploitation de ce slug.

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 24, 2016 14:36

Bon, j'aurais pas mal galéré, mais j'ai enfin ce que je voulais. Les règles de réécriture sont les suivantes.

Code: Tout sélectionner
    $string = strtolower(iconv('UTF-8', 'ASCII//TRANSLIT', $data['titre']));
    $string = preg_replace('/[^A-Za-z0-9\- \']/', '', $string);
    $string = str_replace('nbsp',' ',$string);
    $string = str_replace('\'','-',$string);
    $string = str_replace(' ','-',$string);
    $string = str_replace('--','-',$string);
    $string = rtrim($string,'-');


Ce n'est cependant que le départ, puisque dans la nouvelle architecture de mon site, je vais fusionner les entrées de 2 tables. Pour éviter de faire des requêtes trop complexes, je vais alors récupérer toutes les URLs propres telles que mon script les donne, toutes les enregistrer dans une nouvelle colonne de ma table, et ensuite je pourrais faire une requête simple, en demandant juste le titre, le lien et l'image de une pour les plus récentes entrées de mes 2 tables (il y a déjà des URLs en dur dans ma seconde table).

Le seul inconvénient du système est que je serais condamné à écrire moi-même, à la main, mes futurs URLs, mais c'est guère gênant.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 11987
Enregistré le: 23 Nov 2005

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 24, 2016 16:31

Avec un peu de JS dans le back office, tu facilement pré-générer le champ url à partir de ce qui est saisi dans le titre.

NicolasH
WRInaute discret
WRInaute discret
 
Messages: 72
Enregistré le: 4 Mai 2016

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Mer Aoû 24, 2016 16:48

Bonjour,

L'id et la date ne sont pas indispensables dans l'url.

Tu peux avoir un slug unique en controllant ce dernier lors de la saisi d'un nouvel article dans le backoffice.
Il reste plus qu'à faire une recherche par slug dans le backend.

elji
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 261
Enregistré le: 6 Juin 2009

Re: Quoi de nouveau pour le rewriting sophistiqué pour le SEO ?

Message le Jeu Aoû 25, 2016 10:54

NicolasH a écrit:Bonjour,

L'id et la date ne sont pas indispensables dans l'url.

Tu peux avoir un slug unique en controllant ce dernier lors de la saisi d'un nouvel article dans le backoffice.
Il reste plus qu'à faire une recherche par slug dans le backend.


Mon souci n'était pas dans les nouveaux articles, mais plutôt dans les anciens. Je ferais peut-etre un script en JS pour mon formulaire de saisie un jour, mais l'important était d'éviter les doublons dans mes vieux articles.

J'ai donc mis en place un slug

id-unique-titre-de-la-page

et c'est bien. Ce problème est résolu.


Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... 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 :