如何对 nginx 进行条件重定向?

如何对 nginx 进行条件重定向?

我遇到了这样的情况:

考虑一下,我有两篇文章:

我在 nginx 中有一个重定向:

location /old-article.html {
   return 301 http://$server_name/new-article.html;
}

我的目的是让来自我网站之外的人访问旧文章,然后他们将被重定向到新文章。但是当他们使用我的网站时,他们访问旧文章,他们将被带到完全相同的旧文章。

但是通过上面 nginx 中的重定向,我让访问者只转到新文章,就像一个循环一样。

这可以用 nginx 来实现吗?如果可以,我该怎么做?

多谢!

答案1

这可以通过使用 nginx 功能来实现。在级别中map定义以下内容:maphttp

map $http_referer $redirectold {
    default 1;
    "~^http://example.com/" 0;
}

在主配置中:

server {
    if ($redirectold) {
        rewrite ^/old-article.html http://example.com/new-article.html permanent;
    }
}

相关内容