regex 用于重定向的NGINX正则表达式或语句

tnkciper  于 2022-11-26  发布在  Nginx
关注(0)|答案(1)|浏览(155)

如果请求URI中没有“static”,我当前使用以下NGINX配置将所有.html请求重定向到非.html前缀URI:

if ($request_uri ~ ^/(?!static/)(.*)\.html) {
    return 301 /$1$is_args$args;
}

但是,如果请求在用于标记管理器验证的URI中包含“googled”,我也希望避免重定向到非.html变体。
我试着在这个表达式中添加OR statements,但是我似乎无法理解,因为我缺乏在regexp中做类似事情的知识。
在这种情况下,如何添加OR statement

2skhul33

2skhul331#

如果我没理解错的话,你不想匹配例如/googled123.html
您可以:

^\/(?!static\/)(?!.*googled)(.*)\.html

Regex demo.
^-字符串开头
(?!static\/)-不匹配以static/开头的字符串
(?!.*googled)-如果包含googled,则不匹配字符串
(.*)\.html-匹配结尾没有.html的所有项。

相关问题