PHP-使用GZIP压缩静态CSS文件

所以我有一个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脚本移动到与样式表相同的目录中吗?

最佳答案
如果您的Web服务器具有此类功能,则可以使用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

相关文章

Css常用的排序方式权重分配 排序方式: 1、按类型&#160;...
原文:https://www.cnblogs.com/wenruo/p/9732704.html 先上...
css属性:word-wrap:break-word; 与 word-break:break-all 的...
https://destiny001.gitee.io/color/
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML...
css之background的cover和contain的缩放背景图 对于这两个属...