如何使用.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"); 

尽pipe服务器的所有PHP文件都使用zlib进行gzip压缩,但用.​​phpreplace.otf扩展也是行不通的。

使用.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不会跨域加载字体对象 。

在Gecko中,除非使用HTTP访问控制来放宽这个限制,否则Web字体受到相同的域限制(字体文件必须与使用它们的页面在同一个域中)。

 Header set Access-Control-Allow-Origin *