首页 > 解决方案 > 如何将静态网站副本的 URL 缩短为少于 256 个字符?(使用 wget 创建)

问题描述

我必须创建https://www.landesmuseum-mecklenburg.de的完整网站副本/镜像。此副本必须在没有网络连接的 Windows 7 系统上本地运行。Windows 7 有路径长度限制 (255),在我的情况下达到了。我该如何规避这个?

我在 Debian 系统上创建了一个静态网站副本:wget --mirror --adjust-extension --convert-links --restrict-file-names=windows --page-requisites -e robots=off --no-clobber --no-parent --base=./ https://www.landesmuseum-mecklenburg.de/.

这样我几乎得到了我需要的一切。一些特殊的 URL/图像通过单独的 URL 列表通过以下方式下载:wget -c -x -i imagelist.txt

在我从这些文件中创建一个存档并将它们传输到我的 Windows 7 测试系统并将它们解压缩到本地 Web 服务器(称为“MiniWebserver”)之后,我可以访问http://localhost/并且一切似乎都正常。

但是一些深层链接,尤其是图像在 Windows NTFS 文件系统中的路径长度超过 255 个字符。所有这些图像都不会显示在本地网页中。

我尝试了-nH --cut-dirs=5wget 的选项,但没有可接受的结果(index.html 每次都会被覆盖)。

另一个想法是使用 DOS 路径缩短兼容性功能,以便将长目录名称转换为 8 个字符的名称。例如longdirname翻译成longdi~1. 但我不知道如何自动化这个。

更新:又一个想法

我想到的另一件事是在整个路径(例如md5)上使用散列并使用它而不是完整路径+文件名。此外,下载的 .html 文件中的所有 URL 也必须进行替换处理。但是再说一遍:我不知道如何使用 Debian 命令行工具来完成此任务。

标签: linuxwindowsbashwget

解决方案


您可以尝试以下方法:

wget --trust-server-names <url> 

--信任服务器名称

如果设置为 on,则在重定向时,重定向 URL 的最后一个组件将用作本地文件名。默认情况下,它使用原始 URL 中的最后一个组件。


推荐阅读