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:

在解碼以「%XX」形式編碼的文字後,針對標準化 URI 執行匹配,解析對相對路徑組件「.」的引用。和“..”,以及可能將兩個或多個相鄰斜杠壓縮為單個斜杠。

使用(單引號或雙引號)將空格括在字串中。

所以它會是:

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

相關內容