文档说明使用mod_filter可以使用相同的功能。
我目前正在使用
AddOutputFilterByType DEFLATE text/html
使用mod_filter的等效内容是什么?
答案 0 :(得分:16)
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
编码的浏览器提供压缩内容。
答案 1 :(得分:4)
我使用mod_filter
代替而不是放气,但这个想法是一样的。
这对我有用(我正在进行反向代理并重写网址和链接):
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>
答案 2 :(得分:3)
在Apache 2.3.7中它已被弃用,因为它被移动/集成到mod_filter
中。所以,我得到了什么:
而不是:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/css
</IfModule>
使用:
<IfModule mod_filter.c>
...