我正在使用Namecheap域和Vultr托管。
我正在尝试将DNS www重定向到非www。
www.example.com至example.com
我联系了Vultr,并询问如何使用其DNS管理器执行此操作,他们说,由于它是自我管理的,因此他们将无济于事。因此,我联系了Namecheap,他们说他们不会帮忙,因为他们无权访问Vultr的DNS管理器,也不会告诉我我显示给他们的记录是否正确,因此我需要联系Vultr。所以我陷入了无休止的支持循环。
Vultr DNS管理器
我跟随this answer讨论如何设置CNAME以重定向到非www。
Type | Name | Data | Seconds
--------------------------------------
A | | ipv4 address | 300
AAAA | | ipv6 address | 300
CNAME | . | example.com | 300
CNAME | www | example.com | 300
在等待通宵传播之后,www仍然可以访问并且不会重定向。
它不允许我仅创建
A
另一个记录。它说:Unable to add record: A CNAME record is not allowed to coexist with any other data.
NGINX
我按照this guide进行操作,并尝试使用sites-available config将其重定向。 Http和Https可以工作,但是www不会重定向到非www。
server {
# Redirect http to https
listen 80;
return 301 https://$host$request_uri;
}
server {
# Redirect www to non-www
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 443 ssl default_server;
ssl on;
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;
ssl_protocols TLSv1.1 TLSv1.2;
server_name example.com;
...
最佳答案
DNS无法将您的www站点重定向到非www。 DNS的唯一目的是使用A
,AAAA
或CNAME
记录将www和非www都指向服务器的IP地址(没有什么区别)。 nginx
配置负责执行从www到非www的重定向。
您的第二个服务器块旨在从www重定向到非www,但当前仅处理http
连接(在端口80上)。
您可以移动默认服务器,并使用该服务器将所有内容重定向到预期的域名。例如:
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;
server {
listen 80 default_server;
listen 443 ssl default_server;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
...
}
假设您具有www和非www域名的通用证书,则可以将
ssl_
指令移到外部块中,并允许它们被继承到两个服务器块中(如上所示)。有关更多信息,请参见this document。
关于redirect - DNS记录将www重定向到非www,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43081780/