在nginx上使用变量regex重写测试

时间:2012-12-06 13:27:24

标签: regex nginx rewrite

我有一个在nginx上运行的Wordpress多站点网络。我正在尝试使用w3总缓存设置缓存。我99%那里,但我只是坚持一条规则。

我发现some instructions指出了这个重写规则来重写缩小的css&带有漂亮URL的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结构”,就可以实现缩小工作。这纯粹是针对缩小文件的漂亮网址。

1 个答案:

答案 0 :(得分:0)

变量内插在重写正则表达式中不可用。我会用类似的东西:

rewrite ^/wp-content/w3tc-(.*?)/min/(.+\.(css|js))$ /wp-content/w3tc-$1/min/index.php?file=$2 last;