Redirect NGINX将所有路径重定向到特定路径

Redirect NGINX将所有路径重定向到特定路径,redirect,nginx,routing,http-status-code-301,Redirect,Nginx,Routing,Http Status Code 301,我有一个主域(example.com)和多个域(example.net,example1.info,example2.info)指向NGINX配置中的一个位置,如下所示: server { server_name example.com *.com *.net *.info; root /home/example.com/public; } 我想将一个特定路径/login重定向到example.com/login,我该如何实现它?如果我这样做 server { serv

我有一个主域(
example.com
)和多个域(
example.net
example1.info
example2.info
)指向NGINX配置中的一个位置,如下所示:

server {
    server_name example.com *.com *.net *.info;
    root /home/example.com/public;
}
我想将一个特定路径
/login
重定向到
example.com/login
,我该如何实现它?如果我这样做

server {
    server_name example.com *.com *.net *.info;
    root /home/example.com/public;

    location = /login {
    return 301 https://example.com/login;
}
这适用于所有域,除了
example.com/login
,因为它会不断重定向到自身


创建从所有站点上的特定路径到我选择的路径的重定向的正确方法是什么?

从一个站点重定向到另一个站点的最简单逻辑是用自己的服务器块隔离目标站点。可以使用
include
语句将公共配置导入两个服务器块

我会使用默认的服务器块,而不是一长串通配符

大概是这样的:

server {
    listen 80 default_server;
    listen 443 ssl default_server;

    include /path/to/common/config;

    location = /login {
        return 301 https://example.com/login;
    }
}

server {
    listen 443 ssl;

    server_name example.com;

    include /path/to/common/config;
}
有关详细信息,请参阅