首页 > 解决方案 > nginx 静态文件与别名和子路径混淆

问题描述

我想这样设置路径:

    location /board/1 {
        alias /home/front/;
        break;
    }

    location /board/2 {
        alias /home/front/;
        break;
    }

    location /board/{ANY_NUMBER 3..} {
        alias /home/front/;
        break;
    }

所以我这样写:

location ^~ /board/ {
    alias /home/front/;
    break;
}

然后我去/board/1

nginx访问/home/front/1

我想访问/home/front

当我这样设置时:

location /board/1 {
    alias /home/front/;
    break;
}

nginx访问/home/front成功

有人可以解释发生了什么。

标签: nginxnginx-config

解决方案


通过使用alias指令,nginx 基本上将位置路径的一部分(在本例中为/board/1or )替换为指令 ( )/board指定的路径。因此,如果您在位置路径中使用数字,它将被替换,但如果它不在位置路径中,它将被保留。alias/home/front/

您可能想改用正则表达式位置:

location ~* ^/board/[0-9]+/ {
    alias /home/front/;
}

推荐阅读