Nginx DigitalOcean-如何将website.net流量路由到website.com(除了一个页面)?
在DigitalOcean中,我们所有的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.
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;
}
}