我有一个虚拟主机并启用了。我知道这有效,因为正在执行AllowOverride All
中的重写规则(这是一个 Symfony 应用程序)。但是当我在其中有规则时它不起作用。例如:/var/www/site/web/.htaccess
DEFLATE
AddOutputFilterByType DEFLATE application/json
但是如果我把它放入我的虚拟主机配置中它就可以工作了。如下所示:
/etc/apache2/sites-enabled/site.dev.conf
<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
答案1
您正在使用代理,因此不涉及文件系统目录,因此您无法将任何内容放入 htaccess 中并实际使用它。
如果您可以编辑实际配置,为什么还要费心在 htaccess 中设置 DEFLATE 呢?
如果你坚持使用htaccess,那么可以使用mod_proxy_fcgi的SetHandler方法配置。