我很高兴wget -r
这些东西的工作原理和下载方式。
我已经设置了一个本地主机服务器,该服务器为网站提供服务,页面如下所示:
http://localhost:8080/
http://localhost:8080/foo
http://localhost:8080/bar
http://localhost:8080/blog/
http://localhost:8080/blog/1-and-here-the-slug
当我使用它时wget -r localhost:8080
,它会创建以下结构:
.
├── static-files
│ └── ...
├── bar
├── blog
│ └── 1-and-here-the-slug
├── foo
└── index.html
bar
、foo
和1-and-here-the-slug
是文件。我希望它们是包含单个文件的目录,命名index.html
并且仍然不会破坏资源(CSS、JS 等)的路径。
我期望这样的事情:
.
├── static-files
│ └── ...
├── bar
│ └── index.html
├── foo
│ └── index.html
├── blog
│ ├── index.html // <---------- Also I want this one here to show the blog
│ └── 1-and-here-the-slug
│ └── index.html
└── index.html
我怎样才能做到这一点?
答案1
http://localhost:8080/blog/1-and-here-the-slug
bar、foo 和 1-and-here-the-slug 是文件。我希望它们是包含单个文件的目录,名为index.html,并且仍然不会破坏资源(CSS、JS 等)的路径。
├── blog
│ └── 1-and-here-the-slug
│ └── index.html
当您访问http://localhost:8080/blog/1-and-here-the-slug
当前目录 is时blog
,如果将该页面重命名为 be blog/1-and-here-the-slug/index.html
,则新的当前目录将为blog/1-and-here-the-slug
。因此,您将破坏资源(CSS、JS)内的相对路径(如果有)。和如果不修改文件的内部 HTML 就无法解决这个问题。
您能做的最好的事情就是重命名没有任何扩展名的文件以具有 html 扩展名。
├── blog
│ └── 1-and-here-the-slug.html
- 保持相同的目录,您可以
rename
递归地使用该命令:
前任:
find tmp -type f ! -name '*.*' | rename -nv 's/(.*)/$1.html/'
- 您可以创建新目录,但这会破坏相关资源(如果有)
前任:
find tmp -type f ! -name '*.*' | while read file; do
mv $file $file.tmp;
mkdir $file;
mv $file.tmp $file/index.html;
done
您可以通过<base href="">
在文件中插入标签来指定资源的良好路径来玩,但这将是一项艰巨而昂贵的工作
- **或者更好,使用
-E
wget 参数
编辑:阅读wget
手册页给你两个很好的选择
-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.