0

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

基本上,这在我的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

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

4

1 回答 1

1

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

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

所以这里的问题真的变成了:你在哪里有这些规则?在 htaccess 文件中,您只剩下基础问题。如果它在服务器/虚拟主机配置中,您需要知道基础以及在正则表达式中添加前导斜杠:^/css/styles\.css$。或者您可以安全并使其成为可选:^/?css/styles\.css$

现在,基地。基础是附加相对路径的地方。你的css链接是这个css/styles.css。如果该页面是从这个 URL: 加载的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]
于 2012-08-29T07:39:26.963 回答