NGINX - 正则表达式 - 搜索非字母数字的整个位置

NGINX - Regex - Search entire location for non alphanumeric

我的虚拟主机 conf 中有以下正则表达式:

location ~* ^/!/[^a-zA-Z0-9] {
    return 301 $scheme://$http_host;
}

但似乎只匹配第一个字符:

# Redirects to https://shouttag.com correctly
https://shouttag.com/!/!pink

# Does not redirect as expected
https://shouttag.com/!/p!nk

我尝试过的变化:

# Assume that $ is unnecessary b/c I don't know what the end of the url may be
location ~* ^/!/[^a-zA-Z0-9]$ {

# Only seems to work when capturing data via group syntax ()
location ~* ^/!/[^a-zA-Z0-9]+ {

谢谢。

你可以试试这条规则:

location ~ ^/!/[a-zA-Z0-9]*[^a-zA-Z0-9].*$ {
    return 301 $scheme://$http_host;
}