```html 一个网站绑定多个域名 一个网站绑定多个域名 技术笔记 · 2025年3月 上周帮朋友处理了一个问题:他的博客站只绑了一个 .com 域名,结果有人用 .cn 域名访问,站绑页面直接报错。定多他问我能不能让两个域名都指向同一个站点。个网个域当然可以——而且这几乎是站绑每个站长迟早都会碰到的需求。 一个网站绑定多个域名,定多技术上叫“域名别名”或“多域名解析”。个网个域核心原理不复杂:服务器通过 HTTP 请求头里的站绑 Host 字段识别用户访问的是哪个域名,然后决定返回什么内容。定多如果配置得当,个网个域多个域名可以同时指向同一套网站文件,站绑用户看到的定多内容完全一致。 但这里有个容易踩的个网个域坑:搜索引擎会把不同域名视为不同站点。如果你同时绑定 example.com 和 example.net,站绑Google 可能判定这是定多两个独立网站,导致权重分散。解决办法是设置 301 重定向,选一个主域名,其他域名全部跳转过去。这样既保留了多域名的便利,又不会让 SEO 出问题。 实际案例:我自己的技术笔记站绑了三个域名——notes.dev、notes.io 和一个短域名 n.dev。主域名是 notes.dev,另外两个在 Nginx 里做了 301 跳转。用户输入 n.dev 也能瞬间到达,但浏览器地址栏最终显示的是 notes.dev。这样做的好处是:短域名方便口头分享,主域名保持品牌统一。 配置层面,Nginx 是最常见的场景。你可以在 server 块里用 server_name 指令列出所有域名,比如 server_name example.com www.example.com example.net;。如果想做重定向,就单独写一个 server 块监听其他域名,然后 return 301 https://example.com$request_uri;。Apache 也类似,用 ServerAlias 指令就行。 不过,多域名绑定不只是“能访问”就完事了。HTTPS 证书得覆盖所有域名。Let's Encrypt 支持一张证书包含多个域名(SAN 证书),用 Certbot 申请时把域名都列上即可。我见过有人只给主域名配了 SSL,结果用备用域名访问时浏览器弹出安全警告——用户体验直接崩掉。 另一个细节:Cookie 的作用域。默认情况下,Cookie 绑定在设置它的域名上。如果你在 example.com 登录,然后跳转到 example.net,登录状态不会自动带过去。除非你把 Cookie 的 Domain 属性设为 .example.com(但这样只对子域名生效,跨顶级域名无效)。所以多域名站点通常建议统一跳转到主域名再做登录操作,省去一堆麻烦。 还有个小众但实用的场景:临时域名。比如你在做网站迁移,新服务器 IP 已经就绪,但 DNS 还没切换。这时候可以先用一个临时域名绑定到新服务器,测试无误后再把主域名解析过去。等 DNS 生效期间,两个域名同时指向同一台服务器,用户完全无感知。 说到底,多域名绑定是个“配置一次、长期受益”的操作。它不复杂,但细节不少——重定向、SSL、Cookie、SEO,每个环节都得考虑到。如果你只是想让几个域名都能打开同一个站,最低限度做两件事:服务器配好 server_name,然后选一个主域名做 301。剩下的,根据实际需求慢慢调。 我那个朋友后来把 .cn 域名做了 301 跳转,现在两个域名都能用,搜索引擎也只收录主域名。他挺满意,说早该这么干。 ``` |