Je veux qu'Apache envoie des fichiers statiques gzip sur le fil, mais je veux aussi qu'Apache ne les gzip pas toujours encore et encore. J'ai donc pensé qu'il ne serait pas possible de livrer un fichier .gz s'il existe. Cette configuration:
Structure du fichier:
static/
|
|--- style.css
|
\--- style.css.gz
Et ce qui suit dans un .htaccess:
règle mod_rewrite:
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule ^(.+) $1.gz [L]
Et ce paramètre:
AddEncoding x-gzip .gz
En fait, cela fonctionne dans la mesure où le fichier .gz est envoyé à la place du .css, si la demande est envoyée à /static/style.css
. Le problème est seulement que le fichier est livré en tant que "application / x-gzip" et non en tant que "text / css". L'utilisation de l'indicateur T de mod_rewrite ne change rien à cela. Ni explicite
AddType text/css .css
Quelqu'un a-t-il une idée de comment je pourrais obtenir le comportement souhaité? Ou est-ce inutile pour une raison que je n'ai pas prise en compte?
EDIT: Il existe une difficulté supplémentaire: l'envoi du fichier d'origine aux clients sans prise en charge gzip. Quelqu'un at-il une idée de comment cela pourrait fonctionner?
la source
Réponses:
Une solution pour envoyer la bonne version aux navigateurs qui n'acceptent pas gzip serait quelque chose comme:
De plus, il existe une autre façon de changer le type, à savoir:
HTH.
la source
RewriteCond
seul match lorsque le client n'accepte la compression gzip.Ah, il semble que j'ai trouvé une solution: le drapeau T ne fonctionne pas s'il est défini sur la même règle, mais il le fait, si vous le dépensez une règle qui lui est propre:
J'aimerais encore entendre les solutions et les opinions des autres.
la source