新的永久链接结构:nginx 重写循环

新的永久链接结构:nginx 重写循环

我在我的网站上建立了一个新的永久链接结构。添加一些 nginx 重写规则后,出现一个重定向循环到 /vlogger/info/info/info/info/...

旧的固定链接:

/vlogger/user-name

新的永久链接:

/vlogger/info/user-name

当前 nginx 规则:

location ~ /vlogger/(.*)$ {
    rewrite ^/vlogger/info/$1 permanent;
}

我如何检查第二个目录(/vlogger/“info/”)是否始终设置并成功重定向而没有循环?

(*用户名仅包含:a-z0-9 和 - (减号))

答案1

Nginx 终止正则表达式的搜索在第一场比赛中。因此,只需在其上方放置一个更具体的匹配即可。您需要再次使用正则表达式匹配(imo),因为仅在没有正则表达式匹配时才使用前缀匹配。(我强烈建议阅读手册:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

location ~ /vlogger/info/(.*)$ {
    # whatever you want to do with them
}

location ~ /vlogger/(.*)$ {
    rewrite ^ /vlogger/info/$1 permanent;
}

请注意,正则表达式可能不是您的必需品(如果您有其他正则表达式,您可能需要使用正则表达式,在我看来。再次阅读手册条目)。使用前缀字符串可能会获得更好的性能...

location /vlogger/info/ {
    # whatever you want to do with them
}

location /vlogger/ {
    rewrite ^ /vlogger/info/$1 permanent;
}

答案2

我找到了解决方案:

rewrite ^/vlogger/([^/]*)$ /vlogger/info/$1 permanent;

从 /vlogger/name 重定向到 /vlogger/info/name

相关内容