http://localhost:8080/blog/1-and-here-the-slug
bar, foo and 1-and-here-the-slug are files. I want them to be directories with a single file in them, named index.html and still not breaking the paths to the resources (CSS, JS etc).
├── blog
│ └── 1-and-here-the-slug
│ └── index.html
Quando você acessar http://localhost:8080/blog/1-and-here-the-slug
, o diretório atual será blog
, se você renomear essa página para blog/1-and-here-the-slug/index.html
, seu novo diretório atual será blog/1-and-here-the-slug
. Então você vai quebrar os caminhos relativos dentro do recurso (CSS, JS), se houver. E não há como resolver essa questão sem modificar o HTML interno dos arquivos .
A melhor coisa que você pode fazer é renomear arquivos sem qualquer extensão para ter a extensão html.
├── blog
│ └── 1-and-here-the-slug.html
- Mantendo o mesmo diretório, você pode usar o comando
rename
recursivamente:
Ex:
find tmp -type f ! -name '*.*' | rename -nv 's/(.*)/$1.html/'
- Você pode criar novos diretórios, mas isso quebraria os recursos relativos, se houver
Ex:
find tmp -type f ! -name '*.*' | while read file; do
mv $file $file.tmp;
mkdir $file;
mv $file.tmp $file/index.html;
done
Você pode reproduzir inserindo a tag <base href="">
no arquivo para especificar o bom caminho para os recursos, mas isso será um trabalho muito caro e caro
- ** Ou melhor, use o parâmetro
-E
wget
EDIT: a leitura da página man wget
oferece duas opções maravilhosas
-E --adjust-extension If a file of type application/xhtml+xml or text/html is downloaded and the URL does not end with the regexp \.[Hh][Tt][Mm][Ll]?, this option will cause the suffix .html to be appended to the local filename. -k --convert-links After the download is complete, convert the links in the document to make them suitable for local viewing. This affects not only the visible hyperlinks, but any part of the document that links to external content, such as embedded images, links to style sheets, hyperlinks to non- HTML content, etc.