你手里有个旧域名,比如 old-site.com,名跳名现在想让它自动跳到新域名 new-site.com。个域这事不复杂,让域但方法有好几种,名跳名选哪个取决于你的个域服务器环境、域名注册商,让域以及你想跳得多“干净”。名跳名
最直接的个域方式是用 301 重定向。301 是让域 HTTP 状态码,意思是名跳名“永久搬走了”。搜索引擎看到 301 会把旧域名的个域权重慢慢传给新域名,对 SEO 友好。让域如果你只是名跳名临时跳,比如搞活动期间,个域那用 302 也行,但别长期用,否则搜索引擎会困惑。
怎么设置 301?如果你用的是 Apache 服务器,打开 .htaccess 文件,加一行:
Redirect 301 / https://new-site.com/
这会把旧域名下的所有路径原样拼到新域名后面。比如 old-site.com/about 会跳到 new-site.com/about。如果你想把所有页面都导到新域名的首页,那就写:
Redirect 301 / https://new-site.com/
但注意,这样 /about 也会跳到首页,可能会丢一些流量。所以尽量保留路径。
Nginx 的写法不太一样。在 server 块里加:
return 301 https://new-site.com$request_uri;
$request_uri 会带上原始路径和参数,跳转后地址栏里路径不变。我见过有人写成 rewrite ^ https://new-site.com permanent;,效果差不多,但 return 性能更好,因为它在 rewrite 阶段之前就处理了。
如果你没有服务器权限,只是个虚拟主机或者用 CDN,那可以去域名注册商那边找“域名转发”功能。Namecheap、GoDaddy、阿里云都有。设置起来就是填个目标 URL,选 301 还是 302。不过有些注册商的转发是隐藏路径的,比如 old-site.com/about 会直接跳到 new-site.com,路径丢了。你得测试一下。
blog.old.com 迁到 newblog.com,在注册商那设置了转发,结果所有文章链接都跳到了新首页。他以为 301 生效了,其实搜索引擎抓到的全是首页,旧文章排名掉了一大半。后来他换成服务器端 301,保留路径,两周后排名才回来。 还有种情况:你只想跳 www 到非 www,或者反过来。这属于“规范化域名”,也是 301。比如让 www.old.com 跳到 old.com,在 Nginx 里可以这么写:
server {
listen 80;
server_name www.old.com;
return 301 https://old.com$request_uri;
}
这样两个域名都指向同一台服务器,但 www 的请求会被重定向。Apache 里用 RewriteEngine On 加 RewriteCond %{ HTTP_HOST} ^www\.(.*)$ [NC] 和 RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 也行。
别忽略 HTTPS。如果你的新域名是 https,旧域名只有 http,那跳转时要写完整 https://new-site.com,否则浏览器可能先跳 http 再跳 https,多一次往返。另外,旧域名的 SSL 证书如果过期了,用户访问会先看到安全警告,再跳转。所以要么续上证书,要么在服务器层面直接监听 80 端口做跳转,别让用户碰到 https 的旧域名。
测试跳转是否生效,别只看浏览器。用 curl -I http://old-site.com 看返回头。如果看到 HTTP/1.1 301 Moved Permanently 和 Location: https://new-site.com/,那就对了。如果返回 200,说明跳转没生效,可能缓存或者配置没加载。Chrome 的隐身模式也能帮你排除缓存干扰。
最后说个坑:别用 JavaScript 跳转。有人图省事,在旧域名首页放个 window.location.href = 'https://new-site.com'。搜索引擎能执行 JS,但传递权重远不如 301,而且用户会看到旧页面闪一下。更糟的是,如果用户禁用了 JS,跳转就失效了。所以能用服务器端 301 就别用前端。
总结一下,核心就一句:用 301 重定向,保留路径,服务器端配置优先于注册商转发,测试用 curl 别靠肉眼。 搞定这些,域名跳转就算利索了。
```