我想知道如何才能实现这个目标:
new.com --> old.com (displaying new.com in the address bar)
场景:
的用户sub.old.com
想要为他的博客购买一个域名(new.com)。但她希望new.com
在地址栏中显示 而不是sub.old.com
。
它将指向子域名。
我需要做什么?我只需要为 new.com 添加一条记录吗?还是也为 old.com 添加一条记录?
最后,是否可以使用 nginx 来完成 old.com 的操作,而不用进入我的域名主机的控制面板?
答案1
一般情况下,如果一个人实际上在一个域上但在 URL 中显示不同的域,这将是一个相当严重的安全问题。
在您实际上可以控制两个域的情况下,最接近的方法是从主机设置一个 iframe,以便在浏览器中显示并引入子域中的内容。
我知道 GoDaddy 基本上提供了这个服务并称之为“转发”网站。
如果担心 SEO 损失,最好是将相关网址sub.old.com
发送301 Permanent Redirect
到 new.com,让搜索引擎自行处理。
答案2
结论
- 在 new.com 上输入指向 sub.old.com 服务器的 A 和/或 AAAA DNS 记录。
- 配置 nginx 来监听该域上的请求。
Nginx 配置:
server {
listen 80;
listen [::]:80;
root /var/www/same/as/sub.old.com;
index index.html index.htm;
server_name new.com;
location / {
try_files $uri $uri/ =404;
}
}
为什么?
网络上的机器无法与域建立连接,只能与 IP 地址建立连接。因此,DNS 服务器存在以将域转换为 IP。如果您希望两个或多个域指向同一台服务器,则必须将域的 A(IPv4)和/或 AAAA(IPv6)记录设置为指向同一台服务器。这是两个域指向同一 Web 服务器的唯一方法。对于 Web 目的,两个域现在基本上表现相同。其他 DNS 记录仍然可以不同。
重定向流量的另一种方法是让两个域名指向两个不同的网络服务器,new.com 有一个重定向到 sub.old.com 的索引页,但这样 URL 就会改变,因为它实际上将您重定向到另一个域名。它必须这样做,因为 new.com 服务器实际上不托管内容,而 sub.old.com 托管。两个域名都不是在此场景中行为相同。