nginx 301redirect不能按预期工作

我已经将以下规则添加到了我的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; 

对于第一条规则,它将redirect到www.example.com/top100/Armin%20van%20Buuren/www.example.com/Armin%20van%20Buuren/

其他2个规则工作正常。 我在这里弄到了什么?

Nginx使用内部规范化的URI:

在解码以“%XX”forms编码的文本,parsing对相对path分量“。”和“..”的引用并且将两个或更多个相邻斜线压缩成单斜线之后,针对规范化的URI执行匹配。

使用(单引号或双引号)来包装string中的空格。

所以这将是:

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