如果文件不存在,则使用查询字符串中的自定义文件或默认文件进行响应

如果文件不存在,则使用查询字符串中的自定义文件或默认文件进行响应

我有一个 nginx 服务器正在运行一个 React 单页应用程序,内容很简单:

server{
    server_name testing001.example.com;

    location / {
      root /var/www/testing001;
      try_files $uri /index.html;
    }
}

在我的/var/www/testing001目录中,除了应用程序文件之外,我还有一个目录:

\runtimes
\runtimes\1.js
\runtimes\2.js
\runtimes\3.js
...
\runtimes\default.js

我希望所有请求都https://testing.example.com/theRuntime.js?id={1,2,3,4}能够:

  • 根据 id 查询字符串,为我提供相应的文件
    • 这是正常工作的,使用:
location ~* ^/theRuntime\.js {
        if ($arg_id != "") {
            set $id $arg_id;
            rewrite ^ /runtimes/$id.js last;
        }
    }
  • 如果 /runtimes/$id.js 文件不存在,我想提供 /runtimes/default.js,或者甚至只是直接从 nginx 提供一个通用字符串,我不在乎
    • 这是我无法弄清楚的部分,我尝试了很多组合,它要么停止为我提供任何文件(404),要么在某些情况下默认为根目录index.html

相关内容