كيفية خدمة خط gziped باستخدام .htaccess؟ (لا وزارة الدفاع gzip أو تحريف)

StackOverflow https://stackoverflow.com/questions/2042052

سؤال

إليك قائمة بالأشياء التي جربتها بترتيب عشوائي:

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 *
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top