如何设置双域名并且只收录次域名永久 301 双方案!

Google、百度都把「带 www」与「不带 www」视为两个站点。权重分散、Cookie 跨域、统计漏数都是常见问题。最推荐的解决方案:
把所有流量统一集中到 https://www 域名上。
本文用 Nginx 实现「一次 301、零多余跳转」,适用于:
纯 SSH VPS
宝塔面板(Linux 版)
已配置好 SSL(Let’s Encrypt / 商业证书均可)
二、最终效果(验证标准)
用户输入 返回码 最终地址 跳几次
http://fybolg.com 301 https://www.fybolg.com 1
https://fybolg.com 301 https://www.fybolg.com 1
http://www.fybolg.com 301 https://www.fybolg.com 1
https://www.fybolg.com 200 不变 0
三、核心思路
80 端口(HTTP)只做一件事:强制 HTTPS。
443 端口(HTTPS)再做第二件事:强制 www。
两步合并,不会出现「http→https→www」这种多跳,SEO 不损失。
四、SSH 命令行方案(3 步)
步骤 1 备份
sudo cp /www/server/panel/vhost/nginx/www.fybolg.com.conf{,.bak}

步骤 2 编辑
sudo vim /www/server/panel/vhost/nginx/www.fybolg.com.conf

找到监听 443 的那一段,在 server { 行下面插入:
# 统一 www
if ($host != ‘www.fybolg.com’) {
return 301 https://www.fybolg.com$request_uri;
}

保存 :wq
步骤 3 检查与重载

sudo nginx -t # 看到 successful 再继续
sudo systemctl reload nginx

五、宝塔面板可视化方案(3 步)
① 登录宝塔 → 网站 → 点击「www.fybolg.com」→ 配置文件
② 找到含 listen 443 ssl http2; 的 server 段,把下面 3 行粘到最顶部:
# 统一 www
if ($host != ‘www.fybolg.com’) {
return 301 https://www.fybolg.com$request_uri;
}

③ 点「保存」→ 面板会自动 nginx -t,提示「成功」即完成。
六、完整配置模板(直接可用)
# HTTP 跳转 HTTPS
server {
listen 80;
server_name mcfuz.com www.fybolg.com;
return 301 https://www.fybolg.com$request_uri;
}

# HTTPS 统一 www
server {
listen 443 ssl http2;
server_name mcfuz.com www.fybolg.com;

# === 关键 3 行 ===
if ($host != ‘www.fybolg.com’) {
return 301 https://www.fybolg.com$request_uri;
}

# 以下保持原有 SSL、根目录、缓存等配置不变
ssl_certificate /www/server/panel/vhost/cert/www.fybolg.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.fybolg.com/privkey.pem;
root /www/wwwroot/www.fybolg.com;
index index.php index.html;
include enable-php.conf;
# ……其余省略……
}

七、在线验证命令
# 1. 不带 www 的 HTTPS
curl -I https://fybolg.com
# 预期:HTTP/2 301 → Location: https://www.fybolg.com/

# 2. 不带 www 的 HTTP
curl -I http://fybolg.com
# 预期:HTTP/1.1 301 → Location: https://www.fybolg.com/

# 3. 已带 www 的 HTTPS
curl -I https://www.fybolg.com
# 预期:HTTP/2 200

三条全部符合,即可宣布大功告成。
八、常见坑速查

现象 原因 解决
浏览器提示「重定向过多」 又把 www 跳回非 www,造成循环 检查是否有其他插件/规则在反向跳转,保留一套即可
nginx -t 报错「unexpected }」 if 括号后忘写分号 每行 return 必须以分号结尾
修改后仍不生效 没清缓存 宝塔/NGINX 重载 + 本地 Ctrl+F5,或用 curl 看响应头
80 端口只负责「变 HTTPS」;
443 端口再用 3 行 if 完成「变 www」;
一次 301,权重集中,Cookie 域一致,统计不丢数。
按本文操作,10 分钟内就能把 https://fybolg.com 及其所有变种永久统一到 https://www.fybolg.com,SEO 与用户体验双赢。祝你一次成功!

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容