Nginx 重写并返回--为什么有效?

Nginx 重写并返回--为什么有效?

我正在编写一个应用程序来提供对许多旧版应用程序的只读访问权限。我想使用 Nginx 从旧 URL 重定向到单个新 URL,如下所示:

旧网址:http://oldsite.com/?value=something

新网址:http://newsite.com/?value=something&source=oldsite

这是我的 Nginx 服务器块oldsite.com

server {
    listen 80;
    listen 443 ssl;
    server_name oldsite;
    return 301 $scheme://newsite.com$request_uri&source=oldsite;
}

这很有效 - 输入oldsite.comURL 后您就会被重定向到正确的newsite.comURL。

但我对以下行为感到困惑:

http://oldsite.com在浏览器中输入

我希望被重定向至http://newsite.com&source=oldsite

相反,我被重定向到http://newsite.com

我认为可能发生的情况是这样的:当为$request_uri空或 null 时,Nginx 停止处理字符串并返回其所有内容。

虽然这我想要的,却不是我期望的。我在 Nginx 文档中找不到任何关于此内容的提及,而且我不想依赖未记录的“功能”。

谁能解释一下这里发生了什么?

相关内容