在 nginx 中重写 URL 路径而不重定向

在 nginx 中重写 URL 路径而不重定向

由于遗留原因,我有类似这样的 URL https://host.example.com/foo.cgi?id=nnn。我想/foo.cgi?id=nnn用文件的内容进行响应nnn.html,其中nnn是一个变化的数字。

在 nginx 中,如何定义从 URL 路径到不同文件路径的自定义映射而不生成重定向?(也就是说,虽然我希望nnn.html提供 的内容,但我希望浏览器可见的 URL 继续为foo.cgi?id=nnn。)

答案1

假设 URI/foo.cgi已失效,您可以使用完全匹配块通过语句location来处理参数。idtry_files

例如:

location = /foo.cgi {
    root /path/to/files;
    try_files /$arg_id.html =404;
}

该 URI/foo.cgi?id=123将导致 Nginx 搜索文件,/path/to/files/123.html如果未找到则返回 404 状态。

相关内容