Apache no-gzip для определенных типов контента в Mozilla

Мне нужно установить флаг no-gzip, если запрос поступает из браузера Mozilla, а запрашиваемый контент использует тип mime application/pdf. Кажется, это должно быть довольно тривиально, но у меня возникли проблемы с поиском правильного способа выразить это.

У меня есть проверка браузера, используя следующее:

BrowserMatch ^Mozilla moz

Насколько я понимаю, этот оператор установит для переменной среды «moz» значение true, если браузер Mozilla. Однако после этого у меня возникли некоторые проблемы. В частности, я не могу найти способ определить тип контента, который будет возвращен. Глядя на список переменных среды apache, HTTP_ACCEPT кажется связанным, но я не могу найти ссылку на правильный синтаксис для проверки. Из руководств, которые я читал, я предположил, что что-то вроде:

%{HTTP_ACCEPT} application/pdf pdf

установит для переменной 'pdf' значение true, но сервер apache не запустится (что дает сильный намек на то, что это совсем не так). Коллега также упомянул, что, по его мнению, существует директива под названием mime, которая позволяет вам проверять тип содержимого как:

mime application/pdf pdf

Точно так же я не мог заставить это работать (и я не могу найти ссылку на такую ​​​​директиву, даже существующую). Может ли кто-нибудь указать на некоторые хорошие ресурсы для начинающих, которые дадут мне представление о том, как правильно выполнять эти проверки и ссылаться на переменные? В основном я проверял саму документацию Apache и некоторые из их руководств, но я должен что-то упустить.

Для справки, документация, которую я просматривал до сих пор:

http://httpd.apache.org/docs/current/env.html

http://httpd.apache.org/docs/current/howto/cgi.html

Заранее благодарю за любую помощь.


person BGT    schedule 22.02.2011    source источник


Ответы (1)


Вы очень близки, в документации по дефляции есть пример конфигурации, который показывает, как сжимать определенные файлы или как исключать определенные файлы:

http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

Поместите правила BrowserMatch в FilesMatch, чтобы они применялись только к файлам PDF.

http://httpd.apache.org/docs/2.0/mod/core.html#filesmatch

Должно сработать, удачи!

ОБНОВЛЕНИЕ

После получения дополнительной информации от автора вопроса кажется, что mod_filter должен иметь возможность объединить условия для User-Agent (Browser) и Content-Type. (обсуждение в комментариях)

person ctcherry    schedule 22.02.2011
comment
Спасибо за быстрый ответ. Единственная проблема заключается в том, что URL-адрес pdf не содержит расширения .pdf. Все URL-адреса в рассматриваемой системе используют одну и ту же базовую линию. Сам PDF-файл фактически хранится в виде большого двоичного объекта в базе данных Oracle и при необходимости добавляется непосредственно на страницу. Есть ли способ использовать BrowserMatch так же, как FilesMatch? По сути, добавлять директиву AdOutputFilterByType только тогда, когда браузер Mozilla? - person BGT; 22.02.2011
comment
О, вижу, сложно. После осмотра кажется, что вы можете использовать mod_filter для объединения условия для User-Agent (Browser) и Content-Type, но документация там не очень хорошая. Я бы попробовал опубликовать вопрос по этой теме, возможно, на serverfault. (обновленный ответ, содержащий эту информацию) - person ctcherry; 22.02.2011