【发布时间】:2012-11-24 12:59:25
【问题描述】:
我有一个在 nginx 上运行的 Wordpress 多站点网络。我正在尝试使用 w3 总缓存设置缓存。我有 99% 的情况,但我只是坚持一个规则。
我发现 some instructions 指出了这个重写规则,用漂亮的 URL 重写缩小的 css 和 js 文件:
# Rewrite minified CSS and JS files
location ~* \.(css|js) {
if (!-f $request_filename) {
rewrite ^/wp-content/w3tc/min/(.+\.(css|js))$ /wp-content/w3tc/min/index.php?file=$1 last;
}
}
我这样修改它以在我的多站点环境中工作:
rewrite ^/wp-content/w3tc-$host/min/(.+\.(css|js))$ /wp-content/w3tc-$host/min/index.php?file=$1 last;
但是我发现测试并没有解释$host 变量,而是实际测试字符串"$host"。有没有办法在测试中实际使用$host 变量的值?或者,使用一般规则是否是个好主意,例如:
rewrite ^/wp-content/w3tc-.*?/min/(.+\.(css|js))$ /wp-content/w3tc-$host/min/index.php?file=$1 last;
我愿意接受更好的建议 - 正则表达式对我来说不是一个强项。
最后,对于任何寻找替代答案的人:只需在缩小设置中禁用 “重写 URL 结构” 即可使缩小工作。这纯粹是为了缩小文件的漂亮 URL。
【问题讨论】:
-
自己寻找解决方案。就我的研究而言,每当在配置时编译正则表达式时,nginx 都会在运行时完成变量插值。所以没有快乐。寻找解决方法...
-
如果您最终找到了答案,请告诉我。到目前为止,我已经放弃了,因为它确实适用于丑陋的 URL。这对于 CSS/JS 文件来说已经足够好了。
-
这里也放弃了,好像从来没有实现过。也许有一天会有一个自定义模块,现在回到模板配置。