2010-01-11 61 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

相關問題