поэтому у меня есть файл css, style.css. в том же каталоге у меня есть папка images /. Как я могу создать скрипт, который сжимает style.css, но из другой папки?
Прямо сейчас у меня это:
<?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(); ?>
и используйте его примерно так:
<style type="text/css"> @import "http://mysite.com/lib/c.php?css=../style.css"; </style>
все в порядке, за исключением того, что путь к изображениям внутри файла css больше не работает. я думаю, что это потому, что (images / bg.jpg) становится (../images/bg.jpg)
могу ли я исправить это, не перекладывая скрипт c.php в тот же каталог, что и таблица стилей?
Если ваш веб-сервер имеет такую функцию, вы можете использовать переписывание URL-адресов, чтобы сохранить порядок вещей.
Пример с mod_rewrite:
RewriteRule ^images/style\.css$ lib/c.php?css=../style.css
Тогда вы можете просто:
@import "http://mysite.com/images/style.css";
Я также рекомендую вам второй раз взглянуть на ваш скрипт. Что произойдет, если я загружу этот URL?
http://mysite.com/lib/c.php?css=.htpasswd