mod RewriteRule重定向css请求缩小?

时间:2012-08-29 01:17:14

标签: css mod-rewrite minify

我正在尝试将名为styles.css的主样式表的所有请求重定向到min/g=css的minify脚本,这样我就可以实时处理CSS文件并让服务器使用重定向缩小脚本。

基本上,这在我的html文件中......

<link rel="stylesheet" href="css/styles.css" type="text/css">

变成这个

<link rel="stylesheet" href="min/g=css" type="text/css">

当服务器请求它时。

到目前为止,这是我的尝试,但它似乎根本不起作用。常规的css文件只是在服务器上加载..

RewriteRule ^css/styles\.css$ min/g=css

沿着这些方向,我也开始担心何时开始构建子目录页面。这个重写规则是否需要成为“绝对路径”?感谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

  

沿着这些方向,我也开始担心何时开始构建子目录页面。这个重写规则是否需要成为“绝对路径”?感谢大家的帮助!

在htaccess文件中应用规则时,重写引擎会删除URI的前导斜杠,但如果规则在server / vhost配置中,则需要前导斜杠。目标(规则的min/g=css部分)也不需要是绝对路径,但如果存在前导斜杠,则apache会将其应用于基础(通常是文档根)。如果没有前导斜杠,apache会尝试猜测你是指文件路径还是URI路径,有时它会猜错。如果你包含一个RewriteBase指令,那么apache将始终使用它作为它的基础。

所以这里的问题真的变成了:你在哪里有这些规则?在一个htaccess文件中,你只剩下基数的问题。如果它在server / vhost配置中,您需要知道基数以及向正则表达式添加前导斜杠:^/css/styles\.css$。或者你可以安全地做出选择:^/?css/styles\.css$

现在,基地。基数是附加相对路径的位置。您的css链接是css/styles.css。如果该网页已加载,例如此网址:http://domain.com/some/path/mypage.html,则基础http://domain.com/some/path。并且相对路径的分辨率为http://domain.com/some/path/css/styles.css。在此示例中,您的规则需要位于/some/path指向的目录中,并且您需要:

RewriteBase /some/path/

高于你的规则。否则,您只需将该基数附加到规则的正则表达式和目标:

RewriteRule ^/?some/path/css/style\.css$ /some/path/min/g=css [L]
相关问题