【问题标题】:Make Apache virtual directory from the contents of a zip file从 zip 文件的内容创建 Apache 虚拟目录
【发布时间】:2011-12-07 18:10:07
【问题描述】:

我有几个包含静态 HTML 内容的压缩 zip 文件(例如,一个文档目录树,其中包含多个相互链接的静态 html 页面、图像、css 等)。例如,javadoc zip 文件用作我的目的的等效示例。

我的问题是,如果有一个 apache 模块允许 apache 将 zip 文件“挂载”为虚拟目录,其内容就是 zip 文件的内容。我托管 apache 的操作系统是 Mac OS X Snow Leopard。

【问题讨论】:

  • 为什么不直接解压文件?
  • 我有 javadoc zip 文件,Netbeans 按原样使用,压缩后,您可以使用 Netbeans 在运行 Netbeans 应用程序时启动的内部 Web 服务器浏览它。但是当我没有打开 Netbeans 时,我无法使用它。我希望用 apache 实现同样的目标。当然,我可以解压缩它,但我认为这应该是可能的,更不用说拥有一个巨大的静态 html 页面 zip 非常有效,否则会占用更多的磁盘空间而不会提供更高的效率。

标签: apache zip virtual-directory vfs


【解决方案1】:

FUSE 有一个 zip filesystem,通过 MacFUSE 项目在 OS X 上得到支持。这将允许您通过 mount 命令挂载一个 zip 文件,从而允许 Apache(或任何其他应用程序)作为普通目录访问其内容。

我现在手边没有我的 Mac,所以我无法实际测试它。

【讨论】:

  • ...虽然我注意到 MacFUSE 项目此时似乎没有维护。
【解决方案2】:

我不知道有任何现有的 Apache 模块可以执行此操作,但您可以通过添加处理对 ZIP 档案访问的 CGI 脚本来实现它而无需触及 Apache 内部结构:

Action zip-archive /cgi-bin/ziphandler.cgi
AddHandler zip-archive .zip

这将使ziphandler.cgi 被调用以访问.zip 文件,或者(更重要的是!).zip 文件下的“目录”中的文件。从那里开始,它应该非常简单。

【讨论】:

  • 如果我有时间实现这样的事情,我会很激动,因为这将是一种全新的体验。但我从未开发过 Apache 模块,而且这不是那么牵强,我认为已经有一些实现可用。不幸的是,我还没有找到任何东西。
【解决方案3】:

使用proxy_http,您可以将请求转发到 Jetty,后者将为任何 ZIP 文件提供服务。

从这里下载 Jetty Runner:http://mvnrepository.com/artifact/org.eclipse.jetty/jetty-runner

您可以使用例如运行它java -jar jetty-runner-9.3.0.M2.jar --port 8082 myZIPFile.zip。现在设置 Apache 将请求转发到 localhost:8082。您甚至可以只对一个子目录执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多