User:AccountManager/Optimisation SEO et corrections MediaWiki

Rapport technique - Optimisation SEO et corrections MediaWiki

Date : 5 janvier 2026
Version MediaWiki : 1.43.0
Environnement : /xxxx/xxxxxxxx/public_html/mw19/


1. Objectifs

1.1 Objectif principal

Empêcher l'indexation par les moteurs de recherche (Google, Bing, etc.) des pages traduites automatiquement, tout en permettant aux robots de suivre les liens présents sur ces pages.

1.2 Objectifs secondaires

  • Corriger les erreurs et avertissements PHP affichés sur les pages traduites
  • Améliorer la robustesse des extensions installées
  • Assurer la compatibilité avec MediaWiki 1.43
  • Mettre à jour le code déprécié de l'extension Analytics

1.3 Justification

Les traductions automatiques, bien qu'utiles pour les utilisateurs, peuvent nuire au référencement du site si elles sont indexées. La directive noindex,follow permet de :

  • Exclure ces pages des résultats de recherche
  • Maintenir la transmission du "link juice" SEO via les liens
  • Conserver une navigation fluide pour les robots d'indexation

2. Modifications effectuées

2.1 LocalSettings.php

2.1.1 Configuration HTMLPurifier

Emplacement : Avant le chargement de l'extension HTMLPurifier
Problème identifié : Variable $wgHTMLPurifierConfig non définie, causant une erreur foreach() sur null

Code ajouté :

# Configuration pour HTMLPurifier
$wgHTMLPurifierConfig = [];

# Charger l'extension HTMLPurifier
wfLoadExtension( 'HTMLPurifier' );

Résultat : Élimination de l'erreur foreach() argument must be of type array|object, null given


2.1.2 Hook pour noindex sur traductions automatiques

Emplacement : Dans la section des hooks personnalisés
Hook utilisé : BeforePageDisplay

Code implémenté :

# Hook no index & no follow pour traductions automatiques
$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {
    $title = $out->getTitle();
    
    if ( $title && $title->exists() ) {
        $categories = $title->getParentCategories();
        
        if ( is_array( $categories ) ) {
            foreach ( $categories as $category => $sortKey ) {
                // Extraire le nom de la catégorie
                $catName = str_replace( 'Category:', '', $category );
                
                if ( $catName === 'Automatic_translations' || $catName === 'Automatic translations' ) {
                    $out->setRobotPolicy( 'noindex,follow' );
                    break;
                }
            }
        }
    }
    
    return true;
};

Fonctionnement :

  1. Intercepte chaque page avant l'affichage
  2. Vérifie si la page appartient à la catégorie "Automatic_translations"
  3. Applique la politique robots noindex,follow si c'est le cas
  4. Gère les deux variantes du nom de catégorie (avec espace ou underscore)

Résultat : Ajout automatique du meta tag <meta name="robots" content="noindex,follow"> dans le <head> de toutes les pages traduites automatiquement


2.2 HTMLPurifierHooks.php (optionnel)

Fichier : /xxxx/xxxxxxxx/public_html/mw19/extensions/HTMLPurifier/HTMLPurifierHooks.php
Lignes modifiées : 19-22

Code original :

$config = HTMLPurifier_Config::createDefault();
foreach ( $wgHTMLPurifierConfig as $key => $value ) {
    $config->set( $key, $value );
}

Code corrigé (recommandé) :

$config = HTMLPurifier_Config::createDefault();
if ( isset( $wgHTMLPurifierConfig ) && is_array( $wgHTMLPurifierConfig ) ) {
    foreach ( $wgHTMLPurifierConfig as $key => $value ) {
        $config->set( $key, $value );
    }
}

Justification : Ajout de vérifications pour éviter les erreurs si la variable globale n'est pas définie


2.3 Analytics.php

Fichier : /xxxx/xxxxxxxx/public_html/mw19/extensions/Analytics/includes/Analytics.php
Ligne modifiée : 64
Problème identifié : Utilisation de la méthode dépréciée getConnectionRef() (statut "deprecated" depuis MediaWiki 1.39)

Code original :

$dbr = $lb->getConnectionRef( DB_REPLICA );

Code corrigé :

$dbr = $lb->getConnection( DB_REPLICA );

Justification :

  • getConnectionRef() est déprécié depuis MediaWiki 1.39
  • getConnection() est la méthode recommandée pour MediaWiki 1.43
  • Cette modification élimine l'avertissement : Use of Wikimedia\Rdbms\LoadBalancer::getConnectionRef was deprecated

Impact : Élimination complète de l'avertissement PHP affiché sur toutes les pages du wiki


3. Résultats et validation

3.1 Tests effectués

  • ✅ Accès à une page traduite automatiquement
  • ✅ Vérification du code source HTML
  • ✅ Confirmation de la présence du meta tag robots
  • ✅ Vérification de l'absence d'erreurs PHP

3.2 Résultat observé

Dans le <head> des pages de la catégorie "Automatic_translations" :

<meta name="robots" content="noindex,follow,max-image-preview:standard">

Composition du meta tag :

  • noindex : ajouté par notre hook (empêche l'indexation)
  • follow : ajouté par notre hook (autorise le suivi des liens)
  • max-image-preview:standard : ajouté par MediaWiki par défaut

3.3 Impact SEO

  • Les pages traduites automatiquement n'apparaîtront plus dans les résultats de recherche
  • Les liens présents sur ces pages continuent de transmettre leur valeur SEO
  • Les pages originales (non traduites) conservent leur indexation normale

3.4 Corrections des erreurs

  • ✅ Erreur HTMLPurifier : foreach() argument must be of type array|object, null given - CORRIGÉE
  • ✅ Avertissement Analytics : Use of getConnectionRef was deprecated - CORRIGÉ
  • ✅ Erreur fatale LocalSettings.php : Cannot use temporary expression in write context - CORRIGÉE

4. Récapitulatif des fichiers modifiés

Fichier Type de modification Statut Critique
LocalSettings.php Ajout de configuration et hook ✅ Implémenté ✅ Oui
HTMLPurifierHooks.php Correction défensive ✅ Implémenté ⚠️ Recommandé
Analytics.php Mise à jour API dépréciée ✅ Implémenté ✅ Oui

5. Recommandations

5.1 Surveillance

  • Vérifier périodiquement que les nouvelles pages traduites reçoivent bien le meta tag noindex
  • Surveiller Google Search Console pour confirmer la désindexation progressive des pages traduites
  • Vérifier l'absence d'erreurs PHP dans les logs après chaque mise à jour de MediaWiki

5.2 Extensions

  • Maintenir l'extension HTMLPurifier à jour pour éviter les problèmes de compatibilité
  • Surveiller les futures mises à jour de l'extension Analytics
  • Documenter toute modification manuelle des extensions pour faciliter les futures mises à jour

5.3 Documentation

  • Documenter que toute page ajoutée à la catégorie "Automatic_translations" sera automatiquement exclue de l'indexation
  • Former les contributeurs à l'utilisation correcte de cette catégorie
  • Conserver ce rapport technique comme référence pour les futures interventions

5.4 Bonnes pratiques

  • Toujours tester les modifications dans un environnement de développement si possible
  • Sauvegarder les fichiers avant modification
  • Documenter chaque intervention dans le carnet technique

6. Conclusion

L'objectif principal a été atteint avec succès. Les pages traduites automatiquement sont désormais protégées de l'indexation par les moteurs de recherche tout en maintenant une structure de liens saine pour le SEO.

Améliorations apportées :

  • ✅ Implémentation du système noindex pour les traductions automatiques
  • ✅ Correction de l'erreur HTMLPurifier
  • ✅ Mise à jour du code déprécié dans Analytics
  • ✅ Élimination de toutes les erreurs et avertissements PHP

Statut final : ✅ Implémentation réussie et fonctionnelle

Toutes les pages traduites automatiquement sont maintenant correctement marquées avec noindex,follow, et le Semantic MediaWiki ne génère plus d'erreurs ou d'avertissements PHP visibles.