【问题标题】:NGINX Redirect all paths to a specific pathNGINX 将所有路径重定向到特定路径
【发布时间】:2026-01-27 04:50:01
【问题描述】:

我有一个主域 (example.com) 和多个域 (example.netexample1.infoexample2.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 除外,因为它不断重定向到自身。

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

【问题讨论】:

    标签: redirect nginx routing http-status-code-301


    【解决方案1】:

    从一个站点重定向到另一个站点的最简单逻辑是用自己的服务器块隔离目标站点。可以使用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;
    }
    

    详情请见this document

    【讨论】: