2010-01-16 3 views
0

J'utilise les scripts ci-dessous pour gzip certains fichiers CSS et JS. Cela fonctionne bien - sauf pour servir des fichiers JS avec le mauvais type de contenu (et non l'application appropriée/x-javascript). Comment pourrais-je améliorer le code PHP afin de servir le bon type de contenu? Merci!PHP: comment servir le bon type de contenu (en fonction de l'extension du fichier?)?

.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); 
?> 

Répondre

5

Vous pouvez vérifier la fin du chemin d'URL demandée:

$_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 Bonne réponse Gumbo! –

+0

J'ai remplacé la ligne 3 de mon script gzip.php original par votre proposition, mais lors de l'exécution du script, j'ai cette erreur: erreur de syntaxe, inattendue T_STRING, attendez ')' dans/is/htdocs/wp1143954_G1SAXKG9IV/www/files/gzip.php on line 5 Dans ma ligne de script 5 est: '.css' => 'text/css; jeu de caractères = utf-8', – univers

+0

@univers: Avez-vous remplacé toute votre troisième ligne par mes lignes? – Gumbo

0

Vous pouvez également consulter les MIME tapez grâce à FileInfo plutôt que d'utiliser l'extension.

Questions connexes