我有一个针对 WebP 图像的 nginx 重写规则,插件文档建议我添加,但它导致错误“‘location’ 中的参数数量无效”。我的托管支持无法修复此问题。有人能发现这里出了什么问题吗?
location ~* ^(/. )\.(jpg|jpeg|jpe|png|gif)$ {
add_header Vary Accept;
if ($http_accept ~* "webp"){
set $imwebp A;
}
if (-f $request_filename.webp) {
set $imwebp "${imwebp}B";
}
if ($imwebp = AB) {
rewrite ^(.*) $1.webp;
}
}
答案1
您的正则表达式包含空格。因此,如果没有引号,它将被解释为两个单独的参数,^(/.
和)\.(jpg|jpeg|jpe|png|gif)$
。
Nginx 的正确语法:location ~* "^(/. )\.(jpg|jpeg|jpe|png|gif)$" { }
然而,
正则表达式看起来也很奇怪。首先,
/
如果不转义,这里是意外的,匹配组(\/. )
意味着“一个/
字符,任何单个字符和空格”。你的意思是:^(\/.*)\.(jpg|jpeg|jpe|png|gif)$