Nginx DigitalOcean-如何将website.net流量路由到website.com(除了一个页面)?

Nginx DigitalOcean-如何将website.net流量路由到website.com(除了一个页面)?,nginx,redirect,digital-ocean,nginx-location,nginx-config,Nginx,Redirect,Digital Ocean,Nginx Location,Nginx Config,在DigitalOcean中,我们所有的website.net都将所有流量指向website.com。任何访问.net的人都将被重定向到.com 我们希望上述内容保持不变,但我们只希望一个页面加载到.net上,而不是重定向到.com website.net/reset应该在.com没有任何重定向的情况下可以访问,但我们不确定如何做到这一点,因为这是我们正在解决的一个边缘问题,目前这是唯一的解决方案 知道如何使用DigitalOcean使website.net/reset不重定向到website.

在DigitalOcean中,我们所有的
website.net
都将所有流量指向
website.com
。任何访问
.net
的人都将被重定向到
.com

我们希望上述内容保持不变,但我们只希望一个页面加载到
.net
上,而不是重定向到
.com

website.net/reset
应该在
.com
没有任何重定向的情况下可以访问,但我们不确定如何做到这一点,因为这是我们正在解决的一个边缘问题,目前这是唯一的解决方案

知道如何使用DigitalOcean使
website.net/reset
不重定向到
website.com

更新:

用于
.com的DNS

用于
.net的DNS

Nginx配置用于
.net

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.website.net;

    # Match /reset request exactly and redirect   
    location /reset {
      # Redirect /reset to google does not work, redirects to website.com instead
      # return 301 http://google.com/;
      # Redirect /reset to website.net/reset does not work, redirects to website.com instead
      return 301 http://www.website.net/reset;
    }

    # Redirect .net to .com
    return 301 https://www.website.com$request_uri;

    ...
}

添加了
.com
/
.net
的DNS和
.net
的nginx配置,但仍然
网站.net/reset
重定向到
网站.com
。您知道如何更改此设置以使其转到
website.net/reset
,而不重定向到
website.com

最简单的方法可能是更新.net服务器的服务器配置,对.com地址发出301重定向响应,但website.com/reset除外。这方面的细节将取决于您使用的web服务器,例如nginx、apache等

对于Apache,这可以使用RedirectMatch指令完成:

<VirtualHost digitaloceanwebsite.net:80>
        ServerName digitaloceanwebsite.net
        # Respond with a 301 redirect to all requests not made to /reset, /other, or /different/page
        RedirectMatch permanent ^(?!\/reset$|\/other$|\/different\/page$) http://digitaloceanwebsite.com
        DocumentRoot "/srv/http/digitaloceanwebsite/net"
        <Directory "/srv/http/digitaloceanwebsite/net"> 
                ...
        </Directory> 
</VirtualHost>

<VirtualHost digitaloceanwebsite.com:80>
        ServerName digitaloceanwebsite.com
        DocumentRoot "/srv/http/digitaloceanwebsite/com"
        <Directory "/srv/http/digitaloceanwebsite/com"> 
                ...
        </Directory> 
</VirtualHost>

另外,如果您需要添加其他异常或只是想对此做进一步的阅读,我们将很好地解释nginx如何选择要使用的位置和服务器块。

感谢您的回复,我添加了一个带有DNS记录/nginx配置的更新,但仍然无法使其正常工作。知道需要修改什么才能工作吗?@Wonka我更新了我的答案,提供了一个应该工作的nginx配置。您配置中的website.com重定向似乎优先于website.net/redirect位置。非常感谢您的回答,效果非常好!
server {
    ...
    server_name www.website.net;

    # = specifies that this is an exact match which immediately takes precedence
    location = /reset {
        # location block for www.website.net/reset
    }

    # redirects all other requests
    location / {
        return 301 https://www.website.com$request_uri;
    }
}