
我已將以下規則新增至我的 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;