كيفية خدمة خط gziped باستخدام .htaccess؟ (لا وزارة الدفاع gzip أو تحريف)
سؤال
إليك قائمة بالأشياء التي جربتها بترتيب عشوائي:
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 الخاصة بالخادم تحصل على Gzlib باستخدام ZLIB، واستبدال ملحق .OTF بواسطة .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
, ، لن يتم تحميل فايرفوكس كائنات الخط عبر المجال.
في Gecko، تخضع خطوط الويب لنفس تقييد المجال (يجب أن تكون ملفات الخطوط في نفس المجال مثل الصفحة باستخدامها)، ما لم يتم استخدام عناصر تحكم وصول HTTP لاسترخاء هذا القيد.
Header set Access-Control-Allow-Origin *
لا تنتمي إلى StackOverflow