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

时间:2016-08-14 04:04:49

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

我有一个主域(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除外,因为它会一直重定向到自身。

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

1 个答案:

答案 0 :(得分: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