Как обслужить gziped шрифт, используя .htaccess? (без модов gzip или deflate) - PullRequest
3 голосов
/ 11 января 2010

Вот список вещей, которые я пробовал в случайном порядке:

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, замена расширения .otf на .php также не работала.

1 Ответ

4 голосов
/ 11 января 2010

С .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 элементы управления используются, чтобы расслабить это ограничение.

Header set Access-Control-Allow-Origin *
...