13 mars 2026 à 10h15 (0 comments)
L'indexation des pages Genepoulin
S'applique pour mon installation Geneweb en mode cgi sur Linux (Red Hat / Almalinux)
J'ai réalisé cette console d'indexation à l'aide de Gemini, l'IA de Google, qui semble bien connaître le sujet, en utilisant la Google Search Console pour inspecter la page/répertoire à être indexée, tester sa visibilité et accès en ligne et demander une accélération de l'indexation. Si la page est indexée et sélectionnée comme URL canonique, elle pourra figurer dans les résultats de la recherche Google avec toutes les optimisations pertinentes faites sur le Programmable Search Engine (PSE) qui donne le ID du moteur de recherche à mettre en ligne. En fin de course, l'index est structuré et non aléatoire.
La gestion des ressources du serveur avec une base de données généalogique telle GeneWeb peut générer des milliers de pages dynamiques car une multitude d'options sont possibles, maîtriser ces facteurs est donc cruciale. Langues étrangères, templates, liens de parenté, de cousinage et graphes sont autant de facteurs multiplicatifs qu'il faut absolument limiter. C'est d'abord fait avec le Programmable Search Engine mentionné plus haut puis d'un fichier guide robots.txt, à l'aide d'un Sitemap et de directives données au serveur sur lequel repose la version Geneweb, les fichiers .htaccess. .
Accès à L' EXPLORATEUR Genepoulin.net
Robots.txt
Ce fichier bloque le bruit de fond technique de la recherche de fichiers et les possibles doublons. Le fichier robots.txt est un document texte public situé à la racine du site et sert de guide de conduite pour les robots des moteurs de recherche tel Googlebot. Dans le cadre de la présente recherche il agit comme un aiguilleur de trafic avec trois missions précises: 1. Filtrer la pertinence, indiquant à Google d'ignorer les pages de "calcul" d'arbres, de graphiques, de parenté et de listes de cousins qui sont certes utiles engénéalogie mais qui polluent les résultats de recherche en créant des milliers de liens répétitifs. 2. Prioriser le contenu en bloquant les fonctions techniques de GeneWeb, on force Google à se concentrer uniquement sur les fiches d'individus, les notes et articles ajoutés. 3. Économiser les ressources en interdisant aux robots de se lancer dans des calculs d'arbres complexes. Ce robots.txt demande aussi à tous les autres robots de ne pas parcourir la base; les bons robots (Bing, Apple, DuckDuckGo) obéiront, mais les mauvais robots (ceux qui aspirent les emails ou cherchent des failles tels Ahrefs, Semrush ou CommonCrawl) ignoreront toutefois cette consigne. Enfin on empêche aussi certains IA (comme ChatGPT ou Claude) d'utiliser le contenu pour s'entraîner sans demander la permission. ** Il est important de mettre en place ce ROBOT avant toute demande d'indexation par Google afin de sauver des ressources serveur et des semaines de nettoyage en laissant la porte grande ouverte!.
# ========================================================== # 1. RÈGLES POUR GOOGLE (Accès optimisé) # ========================================================== User-agent: Googlebot # Exceptions prioritaires Allow: /geneweb/gw.cgi?b=poulin&m=NOTES&f=* Allow: /geneweb/gw.cgi?*em=R*m=NOTES* Allow: /geneweb/bases/poulin.gwb/notes_d/*.txt Allow: /geneweb/sitemap-notes.php Allow: /geneweb/public/ # Gestion des doublons et fonctions techniques Disallow: /geneweb/gw.cgi?*lang=* Disallow: /geneweb/gw.cgi?*templ=templm* Disallow: /geneweb/gw.cgi?*em=R* Disallow: /geneweb/gw.cgi?*m=IM* Disallow: /geneweb/gw.cgi?*m=D* Disallow: /geneweb/gw.cgi?*m=A* Disallow: /geneweb/gw.cgi?*m=C* Disallow: /geneweb/gw.cgi?*m=F* Disallow: /geneweb/gw.cgi?*m=RLM* # Sécurité des répertoires Disallow: /geneweb/bases/ Disallow: /geneweb/etc/ Disallow: /geneweb/images/ Disallow: /geneweb/gw/ Disallow: /geneweb/gallery/ # ========================================================== # 2. BLOCAGE DES ROBOTS D'IA (Protection du contenu) # ========================================================== User-agent: GPTBot User-agent: ChatGPT-User User-agent: CCBot User-agent: AnthropicAI User-agent: Claude-Web User-agent: PerplexityBot Disallow: / # ========================================================== # 3. VERROU GÉNÉRAL (Bloque tout le reste) # ========================================================== User-agent: * Disallow: / # Lien vers le sitemap (lisible par tous les robots autorisés) Sitemap: https://genepoulin.net/geneweb/sitemap-notes.php
Exemple de .htaccess qui bloque tout autre robot que celui de Google Une manière 'forte' de bloquer définitivement les robots autres que Google serait d'utiliser .htaccess à la racine de genepoulin.:
RewriteEngine On
# Si le robot n'est PAS Google
RewriteCond %{HTTP_USER_AGENT} !.*Googlebot.* [NC]
# Et qu'il n'est PAS un humain (on peut ajouter des exceptions ici)
RewriteCond %{HTTP_USER_AGENT} !.*Mozilla.* [NC]
# Alors on lui refuse l'accès (Erreur 403 Forbidden)
RewriteRule ^.*$ - [F,L]
Sitemap
Le fichier Sitemap créé une liste de documents texte contenu dans la base et qui ne font pas parti des fiches individuelles montées par Geneweb - les notes extérieures, et dans mon cas les Articles et Glanures; j'aurais pu aussi inclure le Forum. Le fichier créé est un Sitemap de répertoire avec une structure XML prête à être lue par le robot Google. C'est l'autoroute de l'information des fichiers textes de Genepoulin. Je l'ai nommé sitemap_notes.php, un petit programme php qui a pour fonction de lire les fichiers texte des dossiers et d'ajouter automatiquement à sa liste tout nouveau document créé sur Genepoulin, le tout structuré XML capable d'être lu rapidement par Google. On spécifie lnotre Sitemap dans la Google Search Console au chapitre Sitemaps.
<?php
// On s'assure qu'aucun espace ne sort avant le header
ob_start();
header("Content-Type: application/xml; charset=utf-8");
$base_url = "https://genepoulin.net/geneweb/";
$notes_rel_path = "bases/poulin.gwb/notes_d/";
$full_path = realpath(__DIR__ . "/" . $notes_rel_path) . "/";
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
// 1. Accueil de la base
echo '<url><loc>' . $base_url . 'gw.cgi?b=poulin</loc><priority>1.0</priority></url>' . "\n";
// 2. Scan automatique
if ($full_path && is_dir($full_path)) {
$files = glob($full_path . "*.txt");
foreach ($files as $filepath) {
$filename = basename($filepath);
if ($filename != "." && $filename != "..") {
echo '<url>';
// Utilisation de htmlspecialchars pour les noms de fichiers contenant des caractères spéciaux
$loc = $base_url . $notes_rel_path . rawurlencode($filename);
echo '<loc>' . htmlspecialchars($loc) . '</loc>';
echo '<lastmod>' . date("Y-m-d", filemtime($filepath)) . '</lastmod>';
echo '<changefreq>monthly</changefreq>';
echo '<priority>0.8</priority>';
echo '</url>' . "\n";
}
}
}
echo '</urlset>';
ob_end_flush();
?>
L'exécution de ce fichier php donne cet index formaté XML pour mon site de documents textes: SiteMap
.htaccess dans le dossier racine geneweb
RewriteEngine on
#Raccouci vers genepoulin.net
RewriteCond %{HTTP_HOST} ^genepoulin\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.genepoulin\.net$
RewriteRule ^/?$ "https\:\/\/genepoulin\.net\/geneweb\/gw\.cgi" [R=301,L]
RewriteCond %{QUERY_STRING} (^|&)lang=([^&]+)
RewriteRule ^geneweb/gw.cgi$ - [F]
AddDefaultCharset UTF-8
AddType 'text/plain; charset=UTF-8' .txt
.htaccess dans de le dossier notes_d de la base
Comprend la lecture des pages texte au format Geneweb
RewriteEngine On
# 1. On cible uniquement les fichiers .txt
RewriteCond %{REQUEST_FILENAME} \.txt$ [NC]
# 2. On capture le nom du fichier SANS l'extension .txt
# La règle ^(.*)\.txt$ sépare le nom ( $1 ) de l'extension
# On redirige vers le cgi de GeneWeb
RewriteRule ^(.*)\.txt$ https://genepoulin.net/geneweb/gw.cgi?b=poulin&m=NOTES&f=$1 [R=301,L,QSA]
Vérification du robot
Il est possible de vérifier la bonne syntaxe du robot à l'aide de l'outil Googlebot Simulator / Robots.txt (tapez le texte dans votre fureteur) ou ce LIEN.
Délais de lecture des fichiers par Google pour l'indexage
- Mise à jour du robots.txt : approximativement 24 heures
- Découverte des fichiers : 3 à 7 jours
- Indexation complète des fichiers : 1 à 2 semaines
- Avec une demande d'indexation sur Google Search Console : 24 à 72 heures
Alternatives
Une alternative à l'utilisation de la console de recherche Google est de demander une clé API Custom Search. sur Google Cloud et d'utiliser Javascript pour présenter un moteur de recherche avec son ID et sa clé, par exemple en utilisant ce script formaté pour Genepoulin:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Recherche Archives GeneWeb</title>
<style>
body { font-family: sans-serif; max-width: 800px; margin: 20px auto; padding: 0 15px; line-height: 1.6; }
.search-box { background: #f4f4f4; padding: 20px; border-radius: 8px; margin-bottom: 30px; }
input[type="text"] { width: 70%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; }
button { padding: 10px 20px; background: #0056b3; color: white; border: none; border-radius: 4px; cursor: pointer; }
button:hover { background: #004494; }
.resultat-item { border-bottom: 1px solid #eee; padding: 15px 0; }
.resultat-item a { color: #1a0dab; text-decoration: none; font-size: 1.2em; font-weight: bold; }
.resultat-item a:hover { text-decoration: underline; }
.snippet { color: #444; font-size: 0.95em; margin: 5px 0; }
.geneweb-tag { color: #2e7d32; font-size: 0.8em; font-weight: bold; text-transform: uppercase; }
.url-preview { color: #70757a; font-size: 0.85em; }
</style>
</head>
<body>
<div class="search-box">
<h2>Rechercher dans la base Poulin</h2>
<input type="text" id="query" placeholder="Ex: Jean Poulin 1750...">
<button onclick="rechercher()">Rechercher</button>
</div>
<div id="resultats-container">
</div>
<script>
async function rechercher() {
const query = document.getElementById('query').value;
const container = document.getElementById('resultats-container');
// --- CONFIGURATION ---
const API_KEY = 'CLE_API';
const CX_ID = 'ID_MOTEUR_RECHERCHE';
const BASE_NAME = 'poulin'; // Le nom de la base dans GeneWeb
// ---------------------
if (!query) return;
container.innerHTML = "<p>Recherche en cours dans les archives...</p>";
// On cible plus spécifiquement le répertoire de notes
const url = `https://www.googleapis.com/customsearch/v1?key=${API_KEY}&cx=${CX_ID}&q=${query}+filetype:txt`;
try {
const response = await fetch(url);
const data = await response.json();
container.innerHTML = "";
if (data.items && data.items.length > 0) {
data.items.forEach(item => {
// 1. Extraction du nom du fichier (ex: "notes_d/jean_poulin.txt")
const fullUrl = item.link;
const fileNameWithExt = fullUrl.substring(fullUrl.lastIndexOf('/') + 1);
// 2. Nettoyage pour GeneWeb (on enlève le .txt)
const noteName = fileNameWithExt.replace('.txt', '');
// 3. Construction de l'URL vers l'interface GeneWeb (gw.cgi)
const geneWebLink = `https://genepoulin.net/geneweb/gw.cgi?b=${BASE_NAME};notes=${noteName}`;
// 4. Affichage HTML
const div = document.createElement('div');
div.className = 'resultat-item';
div.innerHTML = `
<div class="geneweb-tag">✓ Fiche GeneWeb</div>
<a href="${geneWebLink}" target="_blank">${item.title}</a>
<p class="snippet">${item.snippet}</p>
<div class="url-preview">Source : ${fileNameWithExt}</div>
`;
container.appendChild(div);
});
} else {
container.innerHTML = "<p>Désolé, aucun document correspondant n'a été trouvé.</p>";
}
} catch (error) {
console.error("Erreur API :", error);
container.innerHTML = "<p>Une erreur technique est survenue. Veuillez vérifier votre connexion ou la clé API.</p>";
}
}
// Permettre la recherche avec la touche "Entrée"
document.getElementById('query').addEventListener('keypress', function (e) {
if (e.key === 'Enter') rechercher();
});
</script>
La clé Google peut être difficile à obtenir, il faut parcourir un véritable labyrinthe de dossiers et de permissions.et est payante lorsque plus de 100 recherches / jour sont effectuées sur le site.
Enfin il existe des programmes Javascript côté serveur tel Pagefind qui permettent l'indexation à l'interne de notre site via NodeJS ou Python sans avoir recours à Google. Ou encore Static Full Text Search qui le fait côté client. Ces options offrent une indexation maison sans besoin de clé et ne propagent pas l'index sur Google qui comme pour tout site sur internet va finir par le faire avec son robot mais partiellement, de façon aléatoire et non structurée.
Le futur ...
L'intégration de l'IA dans les moteurs de recherche (ce qu'on appelle souvent la SGE ou Search Generative Experience) transformera éventuellement la recherche "par mots-clés" en une véritable "conversation".
Voici comment cela va changer l'expérience, notamment pour un site comme Genepoulin:
La fin des "10 liens bleus". Traditionnellement, un moteur de recherche vous donne une liste de sites. Avec l'IA, le moteur lit le contenu des sites pour vous et rédige un résumé. Exemple pour la Base Poulin : Au lieu de simplement lister la fiche de "Henri Cliche", l'IA pourrait répondre directement : "Henri Cliche était un cultivateur en Beauce, il a eu 8 enfants et ses notes de recherche mentionnent un contrat de mariage en 1845."
La compréhension du langage naturel. L'IA permettra de poser des questions complexes que les vieux moteurs ne comprennent pas. Avant : On tapait "Poulin mariage 1800 Beauce". Avec l'IA : On pourra demander "Trouve-moi tous les Poulin qui ont migré de la Beauce vers le Vermont avant 1850". L'IA est capable de faire le lien entre les dates, les lieux et les noms dans les fiches ou fichiers .txt.
Intégration. Il est tout à fait envisageable qu'un jour, le moteur de recherche personnalisé Google (celui configuré) propose une option "Résumer avec l'IA". Le visiteur arrive sur le site. Il pose une question. L'IA scanne les fiches et les notes pour lui répondre sous forme de paragraphe, tout en citant les sources.
Le revers de la médaille ! Il y a cependant un défi pour les créateurs de sites généalogiques : si l'IA donne la réponse directement sur Google, le visiteur ne cliquera peut-être plus sur un lien comme Genepouin. C'est pour cela qu'il est crucial de garder les notes originales et les documents uniques (les fichiers .txt), car l'IA aura toujours besoin de ces données sources pour être précise.
Où en est-on aujourd'hui ? Déjà Google déploie progressivement "AI Overviews" : les aperçus par IA en haut des résultats. Microsoft Bing utilise déjà GPT-4 pour répondre aux questions et Perplexity :est un moteur de recherche qui fonctionne exclusivement par IA.
Les avantages ? Valorisation des recherches: les notes qui sont parfois enfouies redeviennent vivantes car l'IA peut les synthétiser en une seconde. Accessibilité: pour les gens qui ne sont pas familiers avec l'interface technique de GeneWeb, le dialogue est beaucoup plus naturel. Précision: contrairement à un ChatGPT généraliste qui peut "halluciner" (inventer des faits), un chatbot branché sur une base de données généalogique telle Genepoulin ne dira que ce qui se trouve dans les documents.
« RechercheNom Manuel »
