2010-01-11 46 views
3

这里的东西清单我按随机顺序尝试:如何使用.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"); 

即使服务器的所有PHP文件使用zlib的,由.PHP没更换杂项文件扩展名获得gzip压缩也不行。

回答

4

.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将不会加载font objects cross-domain

在壁虎,网页字体都受到了 同一域限制(字体文件 必须在同一个域中的页面 使用它们),除非HTTP访问 控件用来放松这个 限制。

Header set Access-Control-Allow-Origin * 
+0

THX回答//我复制粘贴,并尝试了//它不工作(字体是没有得到gzip压缩)使用Firebug在Firefox 3.5 //该ForceType指令不工作或者检查(申请/vnd.oasis.opendocument.formula-template)//我必须替换REQUEST_FILENAME或REQUEST_URI吗? – Knu 2010-01-11 14:06:01

+0

你有提前制作的gzip文件,对不对?您可以尝试通过注释删除接受编码的检查行。 – YOU 2010-01-11 14:43:06

+0

你可以在这里用萤火虫查看这个页面 - http://test.my-mm.org/font/embed.htm。它的工作和我在我的博客中使用类似的方式。 – YOU 2010-01-11 14:48:44

相关问题