Mediawiki utilisation sitemaps

De EjnTricks

L'indexation par les moteurs de recherche peut être optimisée par la mise à disposition d'un plan de site, communément appelé sitemap. La génération manuelle de ces informations est particulièrement longue et fastidieuse. Heureusement, le script generateSitemap.php est fourni lors de l'installation de MediaWiki dans le répertoire maintenance.

Hand-icon.png Votre avis

Current user rating: 8/100 (1 votes)

 You need to enable JavaScript to vote


Process-Icon.png Exécution

Ce script php accepte quatre arguments.

Paramètre Description
--fspath Répertoire dans lequel le sitemap sera généré.
--urlpath URL pointant sur le répertoire de génération du sitemap.
--server URL du site sur lequel le sitemap est généré.
--compress Compression ou non des fichiers, les valeurs possibles sont yes ou no.


ATTENTION lors de la première version, la description du fonctionnement comportait une erreur. Il était indiqué http://www.jouvinio.net/wiki comme valeur pour l'argument -server. Or ceci engendrait des URLs invalides au sein des fichiers du sitemap. En effet, le contenu était similaire à ceci:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<url>
		<loc>http://www.jouvinio.net/wiki/wiki/index.php/Accueil</loc>
		<lastmod>2012-03-17T17:33:35Z</lastmod>
		<priority>1.0</priority>
	</url>
	<url>
		<loc>http://www.jouvinio.net/wiki/wiki/index.php/Activation_HTTPS_sous_Apache</loc>
		<lastmod>2012-05-16T23:21:51Z</lastmod>
		<priority>1.0</priority>
	</url>
</urlset>

Il se trouve que le script trouve tout seul la racine du wiki, à savoir dans ce cas wiki, et le rajoute correctement aux URLs. Il faut donc bien préciser l'URL parent du wiki, et non son URL complète.

Pour ce Wiki par exemple, les paramètres sont.

Paramètre Description
--fspath /var/datas/mediawiki/sitemap
--urlpath http://www.jouvinio.net/wiki/sitemap
--server http://www.jouvinio.net
--compress yes

L'exécution donne le résultat suivants:

#sudo php /var/lib/mediawiki/maintenance/generateSitemap.php --fspath /var/datas/mediawiki/sitemap
--server http://www.jouvinio.net --urlpath http://www.jouvinio.net/wiki/sitemap --compress=yes
0 ()
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_0-0.xml.gz
2 (Utilisateur)
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_2-0.xml.gz
6 (Fichier)
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_6-0.xml.gz
8 (MediaWiki)
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_8-0.xml.gz
10 (Modèle)
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_10-0.xml.gz
14 (Catégorie)
        /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_14-0.xml.gz

Comme l'indique l'exécution, les données du Wiki sont répartis dans différents fichiers pour:

  • Les utilisateurs.
  • Les fichiers téléversés.
  • Les articles.
  • Les modèles.
  • Les catégories.

Dans cet exemple, le fichier /var/datas/mediawiki/sitemap/sitemap-wikidb-ejnwiki_-NS_0-0.xml.gz est le fichier principal contenant contenant les liens vers tous les autres fichiers.

Run-icon.png Automatisation

Sur un Wiki actif, il est important de mettre à jour régulièrement le sitemap.

Command-icon.png Script

La commande présentée ci dessus est placée dans un script bash, qui sera planifié avec Crontab.

#!/bin/bash
php /var/lib/mediawiki/maintenance/generateSitemap.php --fspath /var/datas/mediawiki/sitemap --server http://www.jouvinio.net --urlpath http://www.jouvinio.net/wiki/sitemap --compress=yes >> /dev/null

chown www-data:www-data /var/datas/mediawiki/sitemap/*

La sortie de la commande est redirigée vers /dev/null car pas utile dans le cadre de cet article, mais il peut être envisagé de le placer dans un fichier log.

En fin de traitement, le propriétaire des fichiers est modifié pour www-data qui est le compte de chargement du serveur Apache, où est exposé le Wiki.


Scheduled-Tasks-icon.png Planification

Le script présenté ci dessus est placé dans un fichier generate-sitemap.sh. Pour des raisons de sécurités, les permissions permettent uniquement au compte root de le modifier et de le visualiser.

#sudo chown root:root generate-sitemap.sh
#sudo chmod 640 generate-sitemap.sh

L'objectif est de plannifier l'exécution tous les dimanches soir à 23h50. La mise en place s'effectue en modifiant le fichier /etc/crontab pour y ajouter la ligne.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
50 23   * * 0   root    cd / && /var/datas/mediawiki/generate-sitemap.sh
#

System-Internet-Search-icon.png Directive robots.txt

Les moteurs de recherche s'appuient sur les fichiers robots.txt. Il est possible de spécifier dans ceux-ci l'emplacement du sitemap avec la directive Sitemap.

User-agent: *
Disallow: /jenkins

Sitemap: http://www.jouvinio.net/wiki/sitemap/sitemap-index-wikidb-ejnwiki_.xml

Warning-icon.png Déploiement d'un plan de site

Dans le cadre de l'installation de ce wiki, le sitemap est généré sous /var/datas/mediawiki/sitemap. Le contenu du répertoire est similaire à ceci:

# ll /var/datas/mediawiki/sitemap
total 40
drwxr-xr-x 2 www-data www-data 4096 mars  29  2012 ./
drwxr-xr-x 5 www-data www-data 4096 avril  8  2012 ../
-rw-r--r-- 1 www-data www-data 1042 avril 15  2012 sitemap-index-wikidb-ejnwiki_.xml
-rw-r--r-- 1 www-data www-data 4083 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_0-0.xml.gz
-rw-r--r-- 1 www-data www-data  416 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_10-0.xml.gz
-rw-r--r-- 1 www-data www-data 2641 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_14-0.xml.gz
-rw-r--r-- 1 www-data www-data  223 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_2-0.xml.gz
-rw-r--r-- 1 www-data www-data 7542 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_6-0.xml.gz
-rw-r--r-- 1 www-data www-data  294 avril 15  2012 sitemap-wikidb-ejnwiki_-NS_8-0.xml.gz

Or ce répertoire n'est pas directement accessible depuis le lien URL. Dans un premier temps, il faut donc mettre en place un lien sur le fichier xml, dans le répertoire par défaut du site soit /var/www/default

#sudo ln -s /var/datas/mediawiki/sitemap/sitemap-index-wikidb-ejnwiki_.xml /var/www/default/sitemap-index-wikidb-ejnwiki_.xml
#sudo chown -h www-data:www-data /var/www/default/sitemap-index-wikidb-ejnwiki_.xml

Or ce fichier XML référence l'ensemble de fichier se situant dans le même répertoire, à savoir /var/datas/mediawiki/sitemap. Si le fichier xml est accédé via son URL, le contenu est le suivant:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_0-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_2-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_6-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_8-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_10-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
	<sitemap>
		<loc>http://www.jouvinio.net/wiki/sitemap/sitemap-wikidb-ejnwiki_-NS_14-0.xml.gz</loc>
		<lastmod>2012-04-15T21:07:15Z</lastmod>
	</sitemap>
</sitemapindex>

Or les URLs ne sont pas accessibles, rendant l'exploitation de l'information impossible, par les moteur de recherche par exemple. La solution la plus simple est donc de créer de nouveau un lien symbolique dans le répertoire par défaut du wiki, appelé sitemap, vers le répertoire contenant les fichiers. Ainsi les URLs pourront être résolues.

#sudo ln -s /var/datas/mediawiki/sitemap /var/lib/mediawiki/sitemap
#sudo chown -h www-data:www-data /var/lib/mediawiki/sitemap

Pour rappel, voir les procédures d'installation de Mediawiki.


Viewer icon.png Voir aussi

Documentation officielle: http://www.mediawiki.org/wiki/Manual:GenerateSitemap.php


Spécifications: http://www.sitemaps.org/