如何使用的.htaccess服务于gziped字体? (无MOD gzip或deflate)
题
下面是我在随机顺序尝试的东西列表:
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");
即使使用zlib的获得gzip压缩了服务器的所有PHP文件,替换由.PHP的杂项文件扩展名也不能工作。
解决方案
使用htaccess的,你可以做这样的,假设字体文件是fontfile.otf.gz
,浏览器请求,作为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>
如果字体文件和网站的跨域,你需要把Access-Control-Allow-Origin
,Firefox将不加载的字体对象跨域。
在壁虎,网页字体都受到了 同域限制(字体文件 必须在同一个域中的页面 使用它们),除非HTTP访问 控制用于放松此 限制。
Header set Access-Control-Allow-Origin *
不隶属于 StackOverflow