Создайте виртуальный каталог Apache из содержимого zip-файла

У меня есть пара сжатых zip-файлов со статическим содержимым HTML (например, дерево каталогов документации с несколькими статическими html-страницами, которые ссылаются друг на друга, изображениями, css и т. д.). Например, zip-файл javadoc служит эквивалентным примером для моя цель.

Мой вопрос в том, есть ли модуль apache, который позволил бы apache «монтировать» zip-файл как виртуальный каталог, содержимое которого совпадает с содержимым zip-файла. Операционная система, в которой я размещаю apache, — Mac OS X Snow Leopard.


person Ernesto    schedule 07.12.2011    source источник
comment
Почему бы вам просто не разархивировать файл?   -  person Frank Farmer    schedule 07.12.2011
comment
У меня есть zip-файл javadoc, который Netbeans использует как есть, сжатый, чтобы вы могли просматривать его с помощью внутреннего веб-сервера, который Netbeans запускает при запуске приложения Netbeans. Но когда у меня нет открытых Netbeans, я не могу использовать это. Я надеялся добиться того же с apache. Я мог бы, конечно, распаковать его, но я полагал, что это должно быть возможно, не говоря уже о том, что очень эффективно иметь огромный почтовый индекс статических html-страниц, которые в противном случае заняли бы гораздо больше места на диске, не обеспечивая большей эффективности.   -  person Ernesto    schedule 05.04.2012


Ответы (3)


Существует файловая система zip для FUSE, который поддерживается в OS X через проект MacFUSE. Это позволит вам смонтировать zip-файл с помощью команды mount, что позволит Apache или любому другому приложению получить доступ к его содержимому как к обычному каталогу.

У меня сейчас под рукой нет Mac, поэтому я не могу его протестировать.

person larsks    schedule 07.12.2011
comment
... хотя я отмечаю, что проекты MacFUSE на данный момент не поддерживаются. - person larsks; 07.12.2011

Я не знаю о каких-либо существующих модулях Apache для этого, но вы можете реализовать это, не затрагивая внутренности Apache, добавив CGI-скрипт, который обрабатывает доступ к ZIP-архивам:

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

Это заставит ziphandler.cgi вызываться для всех обращений к .zip файлам или (что более важно!) к файлам в «каталогах» в .zip файлах. Оттуда это должно быть довольно просто.

person Community    schedule 30.12.2011
comment
Если бы у меня было время реализовать такую ​​вещь, я был бы в восторге, так как это был бы новый опыт. Но я никогда не разрабатывал модуль Apache, и, поскольку это не так уж надуманно, я думал, что какая-то реализация уже будет доступна. К сожалению, я еще не нашел. - person Ernesto; 05.04.2012

Используя https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html, вы можете перенаправлять запросы на 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. Вы можете сделать это даже только для одного подкаталога.

person Janus Troelsen    schedule 06.04.2015