删除 nginx 上的尾部斜杠(某些 URL 除外)

删除 nginx 上的尾部斜杠(某些 URL 除外)

我正在使用以下代码删除 nginx 虚拟主机中的尾部斜杠,但我想防止在 url 包含某些单词或 slug(例如 /bar/ 或 /foo/ 等)时发生这种情况。

if (!-d $request_filename) {
rewrite     ^/(.+)/$ /$1 permanent;
}

有人能帮助我修改以前的条件以实现我所表达的目标吗?

太感谢了,

答案1

实现此目的的一种方法是使用map。在http级别中,定义map

map $uri $remove_slash {
    ~/bar/ 1;
    ~/foo/ 1;
    default 0;
}

并在server级别中使用映射变量:

if ($remove_slash) {
    rewrite ^/(.+)/$ /$1 permanent;
}

相关内容