nginx:如何使用自定义状态代码重写请求?(200 而不是 301)

nginx:如何使用自定义状态代码重写请求?(200 而不是 301)

出于 SEO 目的,我被要求配置重定向。使用 30x 状态代码进行重定向没有问题,并且有效:

        location ^/home$ {
              return 301 /foo/bar/index.html;
        };

但似乎 301 重定向不足以抓取页面。所以我尝试了以下方法:

        location ^/home$ {
              return 200 /foo/bar/index.html;
        }

但这只会导致字符串“/foo/bar/index.html”作为响应。是否有可能重定向具有 200 状态代码的请求?

答案1

对于这个答案,可能没有配置 nginx 的解决方案。Http 就是不能那样工作。在我们的例子中,我们在应用程序内部映射了 uri,并避免使用 nginx 重写 uri

答案2

location ^/home$ {
    rewrite ^/home$ /foo/bar/index.html last;
    return 200;
}

“rewrite”指令用于将请求的 URL 从“/home”更改为“/foo/bar/index.html”。“last”参数告诉 nginx 停止处理当前位置指令集并继续处理重写的 URL。然后,“return”指令用于将状态代码设置为 200。

相关内容