如何配置使主域名访问时显示子域名站点内容?
嘿,这两个问题本质上都是主域名(apex domain)指向子域名内容的需求,我给你整理几种实用的方案,你可以根据自己的场景(比如要不要保留主域名URL、SEO需求)来选:
example.com显示b.example.com的内容 方案1:HTTP 301/302 重定向(最简单,适合SEO或不需要保留主域名URL的场景)
这个方案就是直接把访问example.com的请求“跳转”到b.example.com,用户浏览器的地址栏会变成子域名。配置方法取决于你的服务器软件:
- Nginx:在
example.com的站点配置块里添加以下代码:
server { listen 80; listen [::]:80; server_name example.com; # 301是永久重定向(利于SEO),换成302就是临时重定向 return 301 $scheme://b.example.com$request_uri; }
- Apache:在
example.com的虚拟主机配置文件或者站点根目录的.htaccess里添加:
RewriteEngine On # 匹配访问example.com的请求 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] # 重定向到b.example.com,保留原请求路径 RewriteRule ^(.*)$ https://b.example.com/$1 [R=301,L]
方案2:反向代理(保留主域名URL,用户无感知跳转)
如果你想让用户访问example.com时,地址栏始终显示example.com,但实际内容来自b.example.com,就用反向代理——相当于example.com的服务器当“中转站”,把用户的请求转发给b.example.com,再把内容返回给用户。
- Nginx:配置
example.com的server块:
server { listen 80; listen [::]:80; server_name example.com; location / { # 这里填b.example.com的域名或直接填它的IP地址 proxy_pass http://b.example.com; # 传递必要的请求头,避免子域名服务器识别异常 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
- Apache:需要先启用
mod_proxy和mod_proxy_http模块,然后在虚拟主机配置里加:
<VirtualHost *:80> ServerName example.com # 把所有请求转发给b.example.com ProxyPass / http://b.example.com/ # 修正响应头里的域名,避免跳转异常 ProxyPassReverse / http://b.example.com/ </VirtualHost>
注意:要确保example.com的服务器能正常访问b.example.com的服务器哦。
方案3:DNS特殊记录(无需服务器配置,适合用CDN/高级DNS服务商的场景)
根据DNS规范,主域名(比如example.com)不能直接设置CNAME记录,但很多主流DNS服务商(比如Cloudflare、AWS Route 53)支持ANAME/ALIAS记录或者CNAME flattening功能。你可以给example.com设置ANAME/ALIAS记录指向b.example.com,这样DNS会自动解析到b.example.com的IP地址,相当于让主域名和子域名指向同一台服务器。这种方法不需要修改任何服务器配置,直接在DNS后台操作即可。
test.com打开b.test.com的文件 这个需求和上面完全一致,只是域名换成了test.com和b.test.com,直接套用上面的三种方案就行:
- 重定向:把
test.com的请求301/302跳转到b.test.com,替换对应域名即可; - 反向代理:在
test.com的服务器上配置反向代理指向b.test.com; - DNS特殊记录:给
test.com设置ANAME/ALIAS记录指向b.test.com。
额外小提醒:如果用反向代理,要是b.test.com的静态资源用了带域名的绝对路径(比如https://b.test.com/css/style.css),用户访问test.com时会正常加载这些资源,一般不需要额外处理;如果是相对路径,那就更没问题了。
内容的提问来源于stack exchange,提问作者JingleBells

