2010-01-16 40 views
0

我正在使用下面的腳本來gzip一些CSS和JS文件。它工作得很好 - 除了提供錯誤的內容類型的JS文件(而不是適當的應用程序/ x-javascript)。我如何改進PHP代碼以便爲正確的內容類型提供服務?謝謝!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); 
?> 

回答

5

你可以檢查請求的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

+1不錯的答案Gumbo! – 2010-01-16 17:29:26

+0

我用你的建議替換了原來的gzip.php腳本的第3行,但是在執行腳本時出現此錯誤: 語法錯誤,意外的T_STRING,期待')'in/is/htdocs/wp1143954_G1SAXKG9IV/www/files/gzip.php第5行 在我的腳本第5行是: 」的.css' => '文本/ CSS;字符集= utf-8', – univers 2010-01-16 17:43:59

+0

@univers:你與我行替換整個第三行? – Gumbo 2010-01-16 17:55:58

0

你也可以檢查mime-鍵入感謝FileInfo而不是使用擴展名。

相關問題