子目录返回不正确的内容Nginx自动索引和动态路径

wecizke3  于 2023-01-25  发布在  Nginx
关注(0)|答案(1)|浏览(137)

我想使用autoindex来暴露服务器上的一些文件,为了方便起见,我想在url中使用short_id,但在文件系统中使用full_id。
当我尝试访问子目录或下载文件时,我总是得到根目录的内容,它不会正确返回我需要的内容
例如:访问examlple.com/12345example.com/12345/subdirectory得到了相同的结果
我尝试了以下配置。

map $room_id $path_name {
    "12345" "12345-ABCD";
    "6789" "disable";
    default "null";
}

server
{
    root /disk1/web/root/path;

    location ~^/(.*?)/(.*) {
        set $room_id $1;
        set $url /$2;

        if ( $path_name = "null" ){
            return 404;
        }

        if ( $path_name = "disable" ){
            return 403;
        }

        alias /disk2/path/to/$path_name/;
        autoindex on;

        #Send the data in JSON
        autoindex_format json;
        addition_types application/json;

        #Calling from SERVERNAME/autoindex/*
        add_before_body /autoindex/header.html;
        add_after_body /autoindex/footer.html;

        #Need to tell that we are sending HTML
        add_header Content-Type text/html;
    }
}
0tdrvxhp

0tdrvxhp1#

通过使用/path/to/$path_name$2;问题解决了!!谢谢理查德史密斯!!!
您从请求的URL中捕获了$url,但从未使用过它。也许您应该使用alias /disk 2/path/to/$path_name$url;- 顺便说一句,选择一个与$url不同的名称可能会更好,因为已经有一个外观非常相似的内部定义变量,名为$uri。- Richard Smith
第一次使用这个平台,没有找到如何设置提交为正确答案,所以复制下来,如果有什么错误,请告诉我

相关问题