У меня есть виртуальный хост, и я включил AllowOverride All
. Я знаю, что это работает, поскольку правила перезаписи в /var/www/site/web/.htaccess
выполняются (это приложение Symfony). Однако когда у меня есть DEFLATE
правило там не работает. Например просто:
AddOutputFilterByType DEFLATE application/json
Однако, если я помещу это в конфигурацию своего виртуального хоста, он работает. Это выглядит так:
<VirtualHost *:80>
ServerName site.dev
DocumentRoot /var/www/site/web
<Directory /var/www/site/web>
AllowOverride All
Require all granted
</Directory>
# Setup passthrough to phm-fpm and auth header fix
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/site/web/$1
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ErrorLog /var/log/apache2/site_error.log
CustomLog /var/log/apache2/site_access.log combined
</VirtualHost>
Любые предложения относительно того, почему это не работает? Я знаю, что лучше всего применять такие правила на виртуальном хосте или, что еще лучше, в основной конфигурации apache. Но мне просто любопытно, почему он не работает, когда помещается в .htaccess
Это работает под управлением Apache 2.4
Вы выполняете проксирование, поэтому каталог файловой системы не используется, поэтому вы не можете ничего поместить в htaccess и использовать его.
Зачем вам нужно настраивать DEFLATE в htaccess, если вы можете редактировать настоящую конфигурацию?
Если вы настаиваете на использовании htaccess, вы можете использовать метод SetHandler для настройки mod_proxy_fcgi.