nginx 301 重定向未按预期工作

nginx 301 重定向未按预期工作

我已将以下规则添加到我的 nginx.conf 文件中

rewrite ^/top100/Armin%20van%20Buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/armin-van-buuren/(.*)$ http://www.example.com/armin-van-buuren/$1 redirect;
rewrite ^/top100/(.*)$ http://www.example.com/$1 redirect;

对于第一条规则,它会重定向www.example.com/top100/Armin%20van%20Buuren/www.example.com/Armin%20van%20Buuren/

其他 2 条规则运行正常。我这里搞砸了什么?

答案1

Nginx 使用内部规范化的 URI:

匹配是针对规范化的 URI 执行的,在解码以“%XX”形式编码的文本、解析对相对路径组件“。”和“..”的引用以及将两个或多个相邻的斜线压缩为一个斜线之后。

使用(单引号或双引号)包裹字符串中的空格。

因此它将是:

rewrite "^/top100/Armin van Buuren/(.*)$" /armin-van-buuren/$1 redirect;

相关内容