# Compress text-based responses. # Primary path: explicit FilterChain matching Content_Type — applies correctly # even when responses come from PHP-FPM via mod_proxy_fcgi, where the legacy # AddOutputFilterByType is sometimes skipped. AddOutputFilterByType is kept as # a secondary safety net inside the same mod_filter guard (the directive # itself is provided by mod_filter on Apache 2.4+). mod_deflate skips itself # when Content-Encoding is already set, so no risk of double compression. FilterDeclare be_compress FilterProvider be_compress BROTLI_COMPRESS "%{Content_Type} =~ m#^text/(html|plain|xml|css|javascript|x-component)#i" FilterProvider be_compress BROTLI_COMPRESS "%{Content_Type} =~ m#^application/(javascript|x-javascript|json|xml|atom\+xml|rss\+xml)#i" FilterProvider be_compress BROTLI_COMPRESS "%{Content_Type} =~ m#^image/svg\+xml#i" FilterProvider be_compress DEFLATE "%{Content_Type} =~ m#^text/(html|plain|xml|css|javascript|x-component)#i" FilterProvider be_compress DEFLATE "%{Content_Type} =~ m#^application/(javascript|x-javascript|json|xml|atom\+xml|rss\+xml)#i" FilterProvider be_compress DEFLATE "%{Content_Type} =~ m#^image/(svg\+xml|x-icon)#i" FilterProvider be_compress DEFLATE "%{Content_Type} =~ m#^font/(otf|ttf)#i" FilterChain be_compress AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/json application/xml application/rss+xml application/atom+xml AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE font/ttf font/otf AddOutputFilterByType BROTLI_COMPRESS text/html text/css text/javascript AddOutputFilterByType BROTLI_COMPRESS application/javascript application/x-javascript application/json application/xml AddOutputFilterByType BROTLI_COMPRESS image/svg+xml