2010-09-23 3 views
3

donc j'ai un fichier css, style.css. dans le même répertoire j'ai les images/dossier. Comment puis-je créer un script qui compresse style.css, mais à partir d'un autre dossier?PHP - compresser le fichier css statique avec GZIP

En ce moment j'ai ceci:

<?php 
    if(isset($_GET['css'])) $file = array('url' => htmlspecialchars($_GET['css']), 'type' => 'text/css'); 
    if(isset($_GET['js'])) $file = array('url' => htmlspecialchars($_GET['js']), 'type' => 'application/javascript'); 
    if(!isset($file)) exit(); 

    header('Content-type: '.$file['type']); 
    header('Cache-Control: max-age='.(60*60*6).', must-revalidate'); 

    // whitespace+comment removal, in case gzip is off 
    function compress($buffer){ 
    global $file; 
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); 
    $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), ' ', $buffer); 
    return $buffer; 
    } 

    if(extension_loaded('zlib')) 
    if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); 

    else ob_start("compress"); 

    include($file['url']);  
    ob_end_flush(); 
?> 

et l'utiliser quelque chose comme ceci:

<style type="text/css"> 
@import "http://mysite.com/lib/c.php?css=../style.css"; 
</style> 

tout est ok sauf que le chemin vers les images à l'intérieur du fichier css ne fonctionne plus . Je pense que c'est parce que (images/bg.jpg) devient (../images/bg.jpg)

puis-je résoudre ce problème sans avoir à déplacer mon script c.php dans le même répertoire que la feuille de style?

Répondre

3

Si votre serveur Web dispose d'une telle fonctionnalité, vous pouvez utiliser la réécriture d'URL pour garder les choses bien rangées.

Un exemple avec mod_rewrite:

RewriteRule ^images/style\.css$ lib/c.php?css=../style.css 

Ensuite, vous pouvez simplement:

@import "http://mysite.com/images/style.css"; 

Je recommande également vous donner un second regard à votre script. Que se passe-t-il si je charge cette URL?

http://mysite.com/lib/c.php?css=.htpasswd 
+0

merci, j'ajouté un chèque d'extension de fichier (de pousser plus loin si elle est ou js css) – Alex

Questions connexes