Makina Blog

Le blog Makina-corpus

Drupal SEO Recipe


L’émer­gence de « recettes » (recipes) dans Drupal me permet enfin de propo­ser ce que je consi­dère comme la meilleure confi­gu­ra­tion par défaut pour le SEO dans Drupal.

Celles et ceux qui me connaissent bien dans la commu­­nauté Drupal savent que je râle depuis de nombreuses années sur la plupart des articles consa­­crés à Drupal et au réfé­­ren­­ce­­ment qui ne sont qu’une longue liste de modules, souvent inutiles, parfois contre-produc­­tifs.

L’émer­­gence de « recettes » (recipes) dans Drupal me permet enfin de propo­­ser ce que je consi­­dère comme la meilleure confi­­gu­­ra­­tion par défaut pour le SEO dans Drupal. Je vais tenter dans cet article d’ex­­pliquer mes choix.

Les personnes inté­­res­­sées unique­­ment par le code pour­­ront le trou­­ver à la toute fin de cet article.

La gestion des URLs

Tout d’abord, on va souhai­­ter réécrire auto­­ma­­tique­­ment les URLs. Le module Pathauto est la solu­­tion utili­­sée depuis long­­temps par la commu­­nauté. Depuis Drupal 8, il ne four­­nit cepen­­dant plus de motifs par défaut, et il faut donc ajou­­ter notre propre confi­­gu­­ra­­tion pour qu’il fonc­­tionne correc­te­ment.

Depuis Drupal 8, le fil d’Ariane est basé sur l’URL du contenu. Pour assu­­rer une cohé­­rence entre le fil d’Ariane et l’ar­­bo­­res­­cence de menu, nous avons donc choisi de baser nos URLs sur l’ar­­bo­­res­­cence de menu ainsi que le titre du contenu, afin d’évi­ter d’ins­­tal­­ler des modules complé­­men­­taires de mani­­pu­­la­­tion du fil d’Ariane. Nous allons donc utili­­ser un motif d’URL par défaut corres­­pon­­dant à : « [node:menu-link:parents:join-path]/[node:title] ».

Capture d'écran de la configuration du module Pathauto

Que faire en cas de chan­­ge­­ment du menu ?

C’est là où la confi­­gu­­ra­­tion n’est plus si triviale. En effet, Drupal souffre actuel­­le­­ment d’un problème à ce niveau-là, et nous embarquons donc sur tous nos projets des patchs, à la fois de Pathauto et du core, pour permettre un chan­­ge­­ment d’URL en cas de chan­­ge­­ment du menu. Pour s’as­­su­­rer de ne perdre aucun réfé­­ren­­ce­­ment asso­­cié aux anciennes URLs, nous acti­­vons égale­­ment le module Redi­­rect afin de redi­­ri­­ger l’an­­cienne URL du contenu vers la nouvelle (c’est le compor­­te­­ment par défaut de Redi­­rect).

C’est trop compliqué pour moi !

Je peux le comprendre. Dans ce cas, nous vous propo­­sons une autre confi­­gu­­ra­­tion, plus simple (mais ce n’est pas celle conte­­nue dans notre recette). Cette confi­­gu­­ra­­tion corres­­pon­­dra à une struc­­ture clas­­sique de site Drupal, où la page d’ac­­cueil d’une rubrique est une vue listant les conte­­nus (et nous consi­dé­rons une rubrique par type de contenu : Actua­li­tés, Presse, Annuaire, …). Le motif d’URL géné­­rique sera alors « [node:content-type:machine-name]/[node:title] ».

Et pour éviter tout problème, nous vous suggé­­rons : d’une part, de chan­­ger la confi­­gu­­ra­­tion Pathauto pour ne jamais chan­­ger l’URL ; d’autre part, d’ins­­tal­­ler un module permet­­tant de calquer le fil d’Ariane sur l’ar­­bo­­res­­cence de menu, comme Menu Bread­­crumb, Easy bread­­crumb ou Bread­­crumb mana­­ger.

La gestion des balises META

Là encore, il existe dans la commu­­nauté une solu­­tion univer­­sel­­le­­ment adop­­tée : le module Meta­­tag. Ici, c’est simple, nous allons le lais­­ser dans sa confi­­gu­­ra­­tion par défaut, qui suffit la plupart du temps. Cette confi­­gu­­ra­­tion a un seul problème, elle manque, au goût de certains réfé­­ren­­ceurs, de subti­­lité. Mais en première approche, c’est large­­ment suffi­­sant.

Et… c’est tout ?

Si vous comp­­tez bien, nous avons installé 3 modules : Pathauto, Redi­­rect & Meta­­tag. Nous consi­­dé­­rons que cette confi­­gu­­ra­­tion est large­­ment suffi­­sante pour la plupart des sites, surtout dans des secteurs non concur­­ren­­tiels (ce qui est le cas de nombreux sites publics insti­­tu­­tion­­nels utili­­sant Drupal). Réduire le nombre de modules instal­lés améliore les perfor­mances et réduit la main­te­nance.

Si vous avez des besoins plus pous­­sés, vous travaille­­rez alors proba­ble­ment avec des personnes char­­gées de ce réfé­­ren­­ce­­ment qui auront des demandes précises auxquelles aucune confi­­gu­­ra­­tion géné­­rique ne pour­­rait répondre direc­­te­­ment. Nous préfé­­rons donc éviter de surchar­­ger le site avec de nombreux modules inutiles (oui, je parle notam­­ment de « SEO Check­­list »), et n’ins­­tal­­ler que ceux qui seront néces­­saires à vos besoins précis, en fonc­­tion de votre stra­­té­­gie. Éven­­tuel­­le­­ment, contac­­tez-nous pour en parler ;-)

Modules addi­tion­nels

Bien sûr, nous propo­sons d’autres modules dans la recette, comme ceux liées au bali­sage Schema.org ou à la créa­tion d’un fichier site­map.xml :

Capture d'écran de la page des modules Drupal

Mais aucun de ces modules addi­tion­nels n’est activé par défaut, pour vous lais­ser maître de votre stra­té­gie.

Plusieurs façons de faire les choses

Parce qu’il y a souvent avec Drupal de nombreuses solu­tions tech­niques menant au même résul­tat, c’est parfois contre-produc­tif d’en choi­sir une qui ne sera pas la plus adap­tée à votre projet. Par exemple, il y a au moins 3 façons d’im­plé­men­ter un bali­sage séman­tique du fil d’Ariane tout en respec­tant les stan­dards (pas de code dans un module person­na­lisé, unique­ment des modules issus de la commu­nauté si on peut) :

  • Si vous utili­sez déjà le module Schema.org Meta­tag, le sous-module Schema.org WebPage vous donne accès à la confi­gu­ra­tion pour le fil d’Ariane :
Capture d'écran de la configuration de Schema.org WebPage
  • L’uti­li­sa­tion d’un module dédié de gestion du fil d’Ariane four­nit parfois direc­te­ment le bali­sage séman­tique, c’est le cas de Easy Bread­crumb, par exemple :
Capture d'écran de la configuration du module Easy Breadcrumb
  • Enfin, il est possible de simple­ment modi­fier le template consa­cré au fil d’Ariane (bread­crumb.html.twig) :
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
  {% for item in breadcrumb %}
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      {% if item.url %}
        <a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="{{ item.url }}">
          <span itemprop="name">{{ item.text }}</span>
        </a>
      {% else %}
        <span itemprop="name">{{ item.text }}</span>
      {% endif %}
      <meta itemprop="position" content="{{ loop.index }}" />
    </li>
  {% endfor %}
</ol>

Yoast ou pas Yoast ?

Les personnes fami­­lières de Word­­press connaissent proba­­ble­­ment le plugin Yoast qui permet de guider l’équipe de rédac­­tion du site sur l’uti­­li­­sa­­tion de mots-clés au sein du contenu des pages. Si cette approche paraît un peu simpliste aujour­­d’hui, cela peut consti­­­tuer une première étape d’aide pour des équipes qui ne seraient que peu formées.

Ce module « Yoast » existe égale­ment au sein de la commu­­­nauté Drupal sous le nom « Real-time SEO for Drupal ». Mais il n’est malheu­­­reu­­­se­­­ment pas compa­­­tible avec le « Layout Buil­­­der » à l’heure actuelle. Nous lui préfé­­­rons donc Yoast Analy­­sis qui se base lui sur des modes d’af­­­fi­­­chage de Drupal et permet donc beau­­­coup plus de liberté :

Image
Capture d'écran du module Drupal Yoast Analysis

Que fait la commu­­nauté aujour­­d’hui ?

La commu­­nauté Drupal a lancé en 2024 une initia­­tive « Drupal CMS » four­­nis­­sant un Drupal déjà pré-confi­­guré pour une majo­­rité de besoins. Dans le cadre de cette initia­­tive, ils ont natu­­rel­­le­­ment proposé une confi­­gu­­ra­­tion pour le réfé­­ren­­ce­­ment, et vous y retrou­­ve­­rez en partie ce que nous décri­­vons dans cet article, notam­­ment sur la confi­­gu­­ra­­tion du module Pathauto.

Mais même la recette « basique » (dont vous pouvez consul­­ter le code ici) ne me satis­fait pas plei­ne­ment, notam­­ment parce qu’elle n’uti­­lise pas le module Meta­­tag. Cela reste néan­moins un bon exemple de confi­gu­ra­tion de recette, et pourra vous servir comme point de départ pour confi­­gu­­rer votre propre recette SEO. La recette avan­­cée, dispo­­nible dans le même dépôt, active beau­­coup (trop) de modules, et n’est proba­­ble­­ment pas un exemple à suivre sans réflexion préa­­lable.

Récu­pé­rer notre recette

Si vous souhai­tez consul­ter ou utili­ser notre recette, vous pouvez télé­char­ger le code ici.

Formations associées

Formations Drupal

Formation Drupal Administrateur

À distance (FOAD) Du 20 au 24 octobre 2025

Voir la Formation Drupal Administrateur

Formations Drupal

Formation Drupal Développeur

Nantes Du 22 au 24 octobre 2025

Voir la Formation Drupal Développeur

Actualités en lien

Migration d'un site Drupal 7 en Drupal 11

04/04/2024

Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.
Voir l'article
Image
Encart D7 vers Drupal 11

Du nouveau dans notre gamme de forma­tions Drupal

03/04/2024

Maîtri­sez le CMS Drupal de bout en bout avec notre panel complet de forma­tions couvrant la migra­tion (notre petite dernière), l’ad­mi­nis­tra­tion, le déve­lop­pe­ment et l’in­té­gra­tion Drupal. Pour deve­nir expert, plon­gez dans l’uni­vers Drupal !
Voir l'article
Image
Formation Migration Drupal 10

Makina Corpus, parte­naire du Drupal­Camp 2024

06/03/2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor du Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».
Voir l'article
Image
Encart article DrupalCamp 2024

Inscription à la newsletter

Nous vous avons convaincus