Comment servir une police gziped en utilisant .htaccess? (Pas d'gzip ou deflate mod)
Question
Voici une liste de choses que j'ai essayé dans un ordre aléatoire:
AddHandler application/x-httpd-php .otf
AddType
default_mimetype
auto_prepend_file = "otf.php"
zlib.output_compression = On
output_handler = ob_gzhandler
header("Content-type: application/octet-stream");
Même si tous les fichiers PHP du serveur se gzip en utilisant zlib, remplaçant l'extension .otf par .php ne fonctionnait pas non plus.
La solution
Avec .htaccess, vous pouvez le faire comme cela, en supposant fichier de police est fontfile.otf.gz
, demande de navigateur comme fontfile.otf
RewriteEngine On
#Check for browser's Accept-Encoding, remove it for force return gzipped one
RewriteCond "%{HTTP:Accept-Encoding}" "gzip.*deflate|deflate.*gzip"
#check file name is endswith otf
RewriteCond %{REQUEST_FILENAME} "\.(otf)$"
#check existance of .gz file name
RewriteCond %{REQUEST_FILENAME}.gz -s
#rewrite it to .otf.gz
RewriteRule ^.*$ %{REQUEST_URI}.gz [L]
#update some response header
<FilesMatch "\.otf\.gz$">
AddEncoding gzip .gz
ForceType "text/plain"
</FilesMatch>
Et si le fichier de la police et le site web est multi-domaine, vous devez mettre Access-Control-Allow-Origin
, Firefox ne se charge pas objets font cross-domain.
Dans Gecko, les polices web sont soumises à la même restriction de domaine (fichiers de police doit être sur le même domaine que la page en utilisant les), à moins que l'accès HTTP les contrôles sont utilisés pour assouplir cette restriction.
Header set Access-Control-Allow-Origin *