如何使用 Nginx 重定向到不同的域?

问题描述 投票:0回答:9

如何使用 Nginx 将

mydomain.example
和任何子域
*.mydomain.example
重定向到
www.adifferentdomain.example

http-redirect nginx vhosts
9个回答
388
投票

server_name 支持使用

.mydomain.example
语法进行后缀匹配:

server {
  server_name .mydomain.example;
  rewrite ^ http://www.adifferentdomain.example$request_uri? permanent;
}

或任何版本 0.9.1 或更高版本:

server {
  server_name .mydomain.example;
  return 301 http://www.adifferentdomain.example$request_uri;
}

35
投票
server {
    server_name .mydomain.example;
    return 301 http://www.adifferentdomain.example$request_uri;
}

http://wiki.nginx.org/HttpRewriteModule#return

http://wiki.nginx.org/Pitfalls#Taxing_Rewrites


26
投票

我正在为我的网站使用此代码

server {
        listen 80;
        listen 443;
        server_name  .domain.example;

        return 301 $scheme://newdomain.example$request_uri;
}

21
投票

如果可以做到

return
,为什么还要使用重写模块?从技术上讲,
return
是重写模块的一部分,因为你可以在这里阅读,但恕我直言,这个片段更容易阅读。

server {
    server_name  .domain.com;

    return 302 $scheme://forwarded-domain.com;
}

您还可以给它一个 301 重定向。


13
投票

这应该通过 HTTPRewriteModule 工作。

示例从

www.example.com
重写为 example.com:

server {
    server_name www.example.com;
    rewrite ^ http://example.com$request_uri? permanent;
}

11
投票

如果您想将

domain1.example
的请求重定向到
domain2.example
,您可以创建一个如下所示的服务器块:

server {
    listen 80;
    server_name domain1.example;
    return 301 $scheme://domain2.example$request_uri;
}

7
投票

您可以简单地在 server {} 块中编写 if 条件:

server {

    if ($host = mydomain.example) {
        return 301 http://www.adifferentdomain.example;
    }
}

4
投票

临时重定向

rewrite ^ http://www.RedirectToThisDomain.example$request_uri? redirect;

永久重定向

rewrite ^ http://www.RedirectToThisDomain.example$request_uri? permanent;

在特定站点的 Nginx 配置文件中:

server {
    server_name www.example.com;
    rewrite ^ http://www.RedictToThisDomain.example$request_uri? redirect;

}

0
投票

刚刚开始使用 wordops,并且有一个用于电子邮件地址的短域名,我需要将其重定向到网站的主要长域名。我的两个域的 MX DNS 条目都指向交换服务器,但 Web 服务位于 DigitalOcean 上。 我最终做的是创建一个基本的 wordops html 站点,然后编辑 nginx conf 以专门重定向到长域名的 http 地址,然后重定向到 https。 这解决了我在 Firefox 等中的“警告”问题。这最终对我有用:

server {
    listen 80;
    listen 443;
    server_name  .shortname.com;
    rewrite ^ http://stupidlongnamedomainname.com$request_uri? permanent;
}
© www.soinside.com 2019 - 2024. All rights reserved.