wget pour cloner un site Web, avec des liens vers le répertoire non index.html

Je voudrais cloner un blog wordpress avec wget pour pouvoir l’inclure en tant que contenu statique dans une application Web que j’écris.

Pour le moment, j’utilise les éléments suivants pour cloner le site:

wget -rk http://sitename.com 

Cela fonctionne bien, mais les liens dans le code HTML généré pointent vers le fichier index.html. Je voudrais que ces liens pointent vers le répertoire qui contient le fichier.

Par exemple, pour la page http://sitename.com/blog-post-about-cats/, wget génère un répertoire “blog-post-about-cats” et y place un fichier index.html. Les liens vers cet article sont écrits sous la forme “../blog-post-about-cats/index.html” où je veux qu’ils soient “../blog-post-about-cats/”.

Je suppose que je le veux parce que je pense que l’index.html dans l’URL est un peu moche et que ces pages traitent de la présentation.

Des idées? Est-ce possible avec wget ou peut-être un outil de ligne de commande différent?

Merci.

Je suppose que wget ne le fait pas par défaut car votre serveur Web local peut être configuré pour servir des pages d’index pour les répertoires, plutôt que pour index.html. La solution la plus simple consiste à post-traiter tous les fichiers HTML récupérés après avec une expression régulière:

 find -name '*.html' | xargs sed -rie 's/href="([^"]*)\/index\.html"/href="\1\/"/gi' 

Si les pages de ce site sont un autre type de fichier tel que des fichiers .php, remplacez “* .php” ou tout ce qui convient. La fonction de l’expression régulière est d’identifier les chaînes de la forme href = “stuff / index.html” et de supprimer l’index.html. Les xargs et find sont utilisés pour l’appliquer à toutes les pages et l’indicateur “-i” à sed lui permet de modifier les fichiers sur place. Les drapeaux “gi” dans l’expression régulière lui permettent de remplacer toutes les occurrences et ne sont pas sensibles à la casse (puisque HTML est insensible à la casse).