Je cherche un générateur de sitemap XML qui peut être déclenché à partir de la ligne de commande, prend en charge nginx et fonctionne sur Linux (Debian). Que peux-tu recommander?
Avez-vous essayé Google? Premier résultat sur la première page:
https://code.google.com/p/sitemap-generators/wiki/SitemapGenerators
Modifier:
Selon les commentaires, j'ai essayé le générateur de sitemap suivant:
http://sitemap-generators.googlecode.com/svn/trunk/docs/en/sitemap-generator.html
Le bundle Zip téléchargé contient quelques fichiers:
drwxr-xr-x 19 user group 646 Apr 10 05:22 .
drwxr-xr-x 3 user group 102 Apr 10 05:12 ..
-r--r-----@ 1 user group 23 Jun 16 2005 AUTHORS
-r--r-----@ 1 user group 1791 Jun 16 2005 COPYING
-r--r--r--@ 1 user group 2267 Dec 5 2005 ChangeLog
-rw-r--r--@ 1 user group 258 Dec 5 2005 PKG-INFO
-r--r--r--@ 1 user group 1111 Dec 5 2005 README
drwxr-xr-x 3 user group 102 Apr 10 05:16 build
-r--r--r--@ 1 user group 5662 Sep 7 2005 example_config.xml
-r--r-----@ 1 user group 996 Jun 16 2005 example_urllist.txt
-r-xr-xr-x@ 1 user group 317 Dec 5 2005 setup.py
-r-xr-xr-x@ 1 user group 73063 Dec 5 2005 sitemap_gen.py
-r-xr-xr-x@ 1 user group 28551 Sep 7 2005 test_sitemap_gen.py
En utilisant le fichier example_config.xml fourni, je l’ai modifié de la manière suivante:
<?xml version="1.0" encoding="UTF-8"?>
<site
base_url="http://YOURDOMAIN.com/"
store_into="/var/www/sitemap_gen-1.4/sitemap.xml"
verbose="1"
>
<url href="http://YOURDOMAIN.com/stats?q=name" />
<url
href="http://YOURDOMAIN.com/stats?q=age"
lastmod="2004-11-14T01:00:00-07:00"
changefreq="yearly"
priority="0.3"
/>
<urllist path="urllist.txt" encoding="UTF-8" />
<!-- Exclude URLs that end with a '~' (IE: emacs backup files) -->
<filter action="drop" type="wildcard" pattern="*~" />
<!-- Exclude URLs within UNIX-style hidden files or directories -->
<filter action="drop" type="regexp" pattern="/\.[^/]*" />
</site>
Je pense que cela sert de modèle pour générer le sitemap.xml. Désormais, le générateur prend en charge l'extraction d'URL à partir de journaux d'accès de style Apache ou à partir d'un fichier de liste d'URL. J'ai choisi de tirer d'un fichier de liste d'URL, car je testais depuis mon ordinateur portable.
Pour générer la liste d'URL, j'ai utilisé 'wget' pour spider le site:
wget -mk --spider -r -l2 http://YOURDOMAIN.COM/
ou
wget -mk --spider -r -l2 http://YOURDOMAIN.COM/ -o urlinfolist.txt
-r
: récursif; -l2
: profondeur (si non défini, profondeur = illimité). Voir wget
page de manuel .
Ensuite, extrayez les URL du wget-log généré:
cat wget-log | tr ' ' '\012' | grep "^http" | egrep -vi "[?]|[.]jpg$" | sort -u > urllist.txt
ou
cat urlinfolist.txt | tr ' ' '\012' | grep "^http" | egrep -vi "[?]|[.]jpg$" | sort -u > urllist.txt
Remarque: Certaines des exclusions que j'avais dans ma ligne n'étaient pas nécessaires car le fichier de configuration les excluait déjà ou pouvait très facilement les exclure.
Puis, a lancé le générateur:
python sitemap_gen.py --config=example_config.xml
Qui a produit le fichier sitemap.xml.
Le script semble conçu pour fonctionner de manière automatisée. Mais cela a fonctionné pour mon test. Le wget peut prendre un certain temps à courir. Toutefois, si vous n'avez pas de réécriture spéciale/etc, vous pouvez simplement analyser le chemin du contenu statique de votre site avec une "recherche" et éventuellement filtrer dessus avant de le transférer dans le fichier de liste d'URL.