Mediawiki utilisation sitemaps
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
.
Sommaire
Votre avis
Current user rating: 8/100 (1 votes)
|
|
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.
Automatisation
Sur un Wiki actif, il est important de mettre à jour régulièrement le sitemap.
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.
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
#
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
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.
Voir aussi
Documentation officielle: http://www.mediawiki.org/wiki/Manual:GenerateSitemap.php
Spécifications: http://www.sitemaps.org/