4

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

我找到了一些说明,这些说明指向了这个重写规则,以用漂亮的 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变量,而是实际测试了 string "$host"。有没有办法$host在测试中实际使用变量的值?或者,使用一般规则是否是个好主意,例如:

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

我愿意接受更好的建议 - 正则表达式对我来说不是一个强项。

最后,对于任何寻找替代答案的人:只需在缩小设置中禁用“重写 URL 结构”即可使缩小工作。这纯粹是为了缩小文件的漂亮 URL。

4

1 回答 1

0

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

rewrite ^/wp-content/w3tc-(.*?)/min/(.+\.(css|js))$ /wp-content/w3tc-$1/min/index.php?file=$2 last;
于 2020-09-03T22:25:08.897 回答