linux - 如何将静态网站副本的 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=5
wget 的选项,但没有可接受的结果(index.html 每次都会被覆盖)。
另一个想法是使用 DOS 路径缩短兼容性功能,以便将长目录名称转换为 8 个字符的名称。例如longdirname
翻译成longdi~1
. 但我不知道如何自动化这个。
更新:又一个想法
我想到的另一件事是在整个路径(例如md5)上使用散列并使用它而不是完整路径+文件名。此外,下载的 .html 文件中的所有 URL 也必须进行替换处理。但是再说一遍:我不知道如何使用 Debian 命令行工具来完成此任务。
解决方案
您可以尝试以下方法:
wget --trust-server-names <url>
--信任服务器名称
如果设置为 on,则在重定向时,重定向 URL 的最后一个组件将用作本地文件名。默认情况下,它使用原始 URL 中的最后一个组件。
推荐阅读
- java - 通过使用循环访问每个索引将字符串数组转换为整数数组
- python - 如何在 Python 中使用 Pandas DF 值作为字符串,以便我可以在 Selenium 中发送具有从 Pandas DF 中提取的确切值的密钥?
- javascript - 寻找匹配项目的理想组合
- javascript - 带有 Babel 和 Webpack 的 AngularJS 不加载组件控制器
- python - 验证棉花糖中的列表
- ios - 如何使用 Apple Enterprise 帐户更新用户 iOS 应用程序
- javascript - 如何在 javascript 中访问我在模型中拥有的列表的属性?
- javafx - 是否有用于结束 JavaFX AudioClip 播放的侦听器?
- php - 数组中按日期排序的PHP问题
- flutter - 生成 dart json_seriaziable 文件不起作用