Apache AddOutputFilterByType устарел.Как переписать используя mod_filter? - PullRequest
13 голосов
/ 08 марта 2011

AddOutputFilterByType устарела в Apache.

В документации сказано, что та же функциональность доступна при использовании mod_filter .

Я сейчас использую

AddOutputFilterByType DEFLATE text/html

Что эквивалентно использованию mod_filter ?

Ответы [ 3 ]

16 голосов
/ 06 мая 2013

AddOutputFilterByType имел серьезные ограничения в httpd-2.2, поэтому он был помечен как устаревший.Но в httpd-2.4 эта директива была перемещена в filter_module, исправлена ​​и не устарела.

В apache 2.2 вместо этого следует включить filter_module и deflate_module и использовать:

# Declare a "gzip" filter, it should run after all internal filters like PHP or SSI
FilterDeclare  gzip CONTENT_SET

# "gzip" filter can change "Content-Length", can not be used with range requests
FilterProtocol gzip change=yes;byteranges=no

# Enable "gzip" filter if "Content-Type" contains "text/html", "text/css" etc.
FilterProvider gzip DEFLATE resp=Content-Type $text/html
FilterProvider gzip DEFLATE resp=Content-Type $text/css
FilterProvider gzip DEFLATE resp=Content-Type $text/javascript
FilterProvider gzip DEFLATE resp=Content-Type $application/javascript
FilterProvider gzip DEFLATE resp=Content-Type $application/x-javascript

# Add "gzip" filter to the chain of filters
FilterChain    gzip

deflate_module будет предоставлять сжатый контент только тем браузерам, которые заявляют о поддержке кодировки gzip в заголовке запроса.

4 голосов
/ 22 августа 2016

Это стало устаревшим в Apache 2.3.7, потому что оно было перемещено / интегрировано в mod_filter. Итак, что у меня есть:

Вместо:

<IfModule mod_deflate.c> 
   AddOutputFilterByType DEFLATE text/css

с помощью:

<IfModule mod_filter.c>
...
4 голосов
/ 24 марта 2011

Я использую mod_filter для замены вместо дефлятирования, но идея та же. Вот что сработало для меня (я делаю обратный прокси и переписываю URL и ссылки):

LoadModule substitute_module modules/mod_substitute.so
LoadModule filter_module modules/mod_filter.so

FilterDeclare MYFILTER
# syntax changed in Apache2.4  (see also  https://httpd.apache.org/docs/current/mod/mod_filter.html)  
FilterProvider MYFILTER SUBSTITUTE "%{Content_Type} = 'text/html'"
FilterProvider MYFILTER SUBSTITUTE "%{Content_Type} = 'text/xml'"
FilterProvider MYFILTER SUBSTITUTE "%{Content_Type} = 'application/javascript'"
FilterProvider MYFILTER SUBSTITUTE "%{Content_Type} = 'application/json'"

<Location /sial/> 
  ProxyPass        http://localhost:8300/
  ProxyPassReverse http://localhost:8300/
  ProxyPassReverseCookiePath / /sial/  
  FilterChain MYFILTER
  Substitute "s|/tea_sial_v2|/sial/tea_sial_v2|inq"
</Location>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...