PHP: как обслуживать правильный тип контента (в зависимости от расширения файла?)? - PullRequest
0 голосов
/ 16 января 2010

Я использую сценарии ниже, чтобы сжать некоторые файлы CSS и JS. Это работает хорошо - за исключением обслуживания файлов JS с неправильным типом содержимого (а не с соответствующим application / x-javascript). Как я могу улучшить код PHP, чтобы обслуживать правильный тип контента? Спасибо!

.htaccess:

AddHandler application/x-httpd-php .css .js
php_value auto_prepend_file gzip.php

gzip.php:

<?php 
ob_start ("ob_gzhandler");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 ;
$ExpStr = "Expires: " . 
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);
?>

Ответы [ 2 ]

5 голосов
/ 16 января 2010

Вы можете проверить окончание запрошенного пути URL:

$_SERVER['REQUEST_URI_PATH'] = strtok($_SERVER['REQUEST_URI'], '?');
$extensionToType = array(
    '.css' => 'text/css;charset=utf-8',
    '.js'  => 'application/javascript;charset=utf-8'
);
$extension = strrchr($_SERVER['REQUEST_URI_PATH'], '.');
if (isset($extensionToType[$extension])) {
    header("Content-type: ".$extensionToType[$extension]);
} else {
    header("Content-type: application/octet-stream");
}
0 голосов
/ 16 января 2010

Вы также можете проверить mime-тип благодаря FileInfo вместо использования расширения.

...