下面我将为你提供一个从概念到实践的完整指南,包括不同场景下的具体操作方法和最佳实践。

老网站301跳转新网站
(图片来源网络,侵删)

什么是301跳转?

  • 定义:301代表“永久移动”(Moved Permanently),这是一个HTTP状态码。
  • 作用
    1. 对用户:访问老网站URL时,浏览器会自动、无缝地跳转到新网站的对应页面,用户几乎感觉不到延迟。
    2. 对搜索引擎:搜索引擎(如Google、百度)的蜘蛛爬虫在抓取到301跳转后,会将新URL替换掉旧URL的索引记录,并将原来旧URL积累的权重和信任度(即“SEO权重”)完全传递给新URL。
  • 为什么不用其他跳转?
    • 302 (临时移动):告诉搜索引擎这是临时性的,权重不会传递,甚至可能导致新旧页面内容冲突,对SEO非常不利。
    • JavaScript跳转:虽然也能实现页面跳转,但搜索引擎爬虫可能不会执行JS,或者将其视为临时跳转,无法传递权重,加载速度也较慢。

永久性迁移,务必使用301跳转。


设置301跳转的核心原则

在动手之前,请务必记住以下几个核心原则,它们直接关系到SEO效果:

  1. 逐页跳转 (1:1 Mapping):尽量做到老网站的每一个页面都跳转到新网站的对应页面。

    • www.old-site.com/about-us.html -> www.new-site.com/about-us
    • www.old-site.com/products/item1 -> www.new-site.com/products/item1
    • 避免:所有页面都跳转到新网站的首页,这会造成巨大的权重损失和用户体验下降。
  2. 保留URL结构:如果可能,尽量保持新旧网站的URL结构相似,这会让301跳转规则更简单,也能更好地保留页面的权重。

    老网站301跳转新网站
    (图片来源网络,侵删)
  3. 处理根域名和 www:用户可能会通过 old-site.comwww.old-site.com 访问你的网站,你需要确保这两种情况都能正确跳转到新网站的对应形式(如统一到 www.new-site.com)。

  4. 更新所有内部链接:在新网站上线后,尽快将所有指向老网站的内部链接更新为新网站的链接,这可以减少不必要的301跳转,提升网站速度和效率。


不同环境下的301跳转设置方法

以下是几种最常见服务器环境的设置方法,请根据你的服务器类型选择对应的方法。

使用 Nginx 服务器 (推荐,性能高)

Nginx是目前非常流行的Web服务器,配置清晰高效。

  1. 登录到你的服务器,使用SSH连接。
  2. 找到Nginx配置文件,通常位于 /etc/nginx/nginx.conf 或在 /etc/nginx/sites-available/ 目录下的站点配置文件中。
  3. 编辑配置文件,在 server 块中添加以下代码:

场景1:整个域名跳转(推荐将根域名和www统一)

# 将 old-site.com 和 www.old-site.com 全部跳转到 www.new-site.com
server {
    listen 80;
    server_name old-site.com www.old-site.com;
    # 执行301跳转
    return 301 http://www.new-site.com$request_uri;
}
# 你的新网站配置
server {
    listen 80;
    server_name www.new-site.com;
    # ... 其他新网站的配置 ...
}

场景2:部分目录或页面跳转

server {
    listen 80;
    server_name www.old-site.com;
    # 将 /blog 目录下的所有页面跳转到新网站的 /news 目录
    location /blog {
        return 301 http://www.new-site.com/news$request_uri;
    }
    # 将 /about-us.html 单个页面跳转到新页面
    location = /about-us.html {
        return 301 http://www.new-site.com/about;
    }
    # 其他路径正常处理(如果新网站在同一服务器上)
    location / {
        # ... 指向新网站的root目录等配置 ...
    }
}
  1. 保存文件,然后测试并重新加载Nginx配置:
    sudo nginx -t  # 测试配置语法是否正确
    sudo systemctl reload nginx # 重新加载配置,使其生效

使用 Apache 服务器

Apache是另一款主流的Web服务器,配置也很灵活。

  1. 登录到你的服务器
  2. 启用 mod_rewrite 模块(通常默认已启用,但可以检查一下):
    sudo a2enmod rewrite
  3. 编辑 .htaccess 文件(通常位于网站根目录)或Apache的虚拟主机配置文件。

场景1:整个域名跳转(推荐)

.htaccess 文件的开头添加:

# 将所有请求重定向到新域名
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-site\.com [NC]
RewriteRule ^(.*)$ http://www.new-site.com/$1 [L,R=301]
  • RewriteCond:匹配条件,%{HTTP_HOST} 是访问的域名,NC 表示不区分大小写。
  • RewriteRule:重写规则, 匹配所有路径,$1 引用第一个括号里的内容,[L,R=301] 表示这是最后一条规则(L)并进行301跳转。

场景2:部分目录或页面跳转

RewriteEngine On
# 将 /old-products/ 目录跳转到 /new-products/
RewriteRule ^old-products/(.*)$ http://www.new-site.com/new-products/$1 [L,R=301]
# 将单个页面跳转
Redirect 301 /old-page.html http://www.new-site.com/new-page.html
  • Redirect 301 是一个更简单的指令,适合单个页面或目录的跳转。
  1. 保存文件,如果是修改了虚拟主机配置,需要重启Apache:
    sudo systemctl restart apache2

使用 cPanel 控制面板 (虚拟主机用户)

如果你使用的是共享虚拟主机,通常通过cPanel来管理,无需接触代码。

  1. 登录cPanel
  2. 在“ domains ”部分找到 “Redirects” (重定向) 功能。
  3. 在弹出的页面中进行设置:
    • Type (类型):选择 "Permanent(301)"
    • http:// or https://:选择你的新网站协议(https更佳)。
    • (Optional) Path:如果只想重定向某个目录,在这里填写,/blog,留空则重定向整个域名。
    • Redirect to:输入你的新域名,www.new-site.com
    • Wild Card Redirect(非常重要!)
      • 不勾选:只有精确匹配的URL才会跳转。old-site.com/page1 不会跳转到 new-site.com/page1
      • 勾选:会进行通配符重定向。old-site.com/page1 会跳转到 www.new-site.com/page1对于整个域名的迁移,强烈建议勾选此项
  4. 点击 “Add” 按钮。

使用 WordPress CMS (无需服务器配置)

如果你使用WordPress,有几种非常简单的方法:

  1. 使用SEO插件(最推荐)

    • 安装并激活 Yoast SEORank Math 这类插件。
    • 在插件设置中找到 “Redirects” (重定向) 功能。
    • 通常会有一个选项,让你输入旧URL和新URL,然后添加重定向规则,你可以批量添加。
    • 这些插件非常智能,能自动处理很多情况,是WordPress用户的最佳选择。
  2. 使用专门的301重定向插件

    • 安装 “All 404 Redirect to Homepage”“Redirection” 等插件。
    • Redirection 插件功能非常强大,可以管理大量的301重定向,并能记录404错误,帮助你找到需要设置跳转的旧页面。
  3. 在主题的 functions.php 文件中添加代码(适合开发者)

    add_action('template_redirect', 'old_site_redirects');
    function old_site_redirects() {
        if (is_page('old-page-slug')) {
            wp_redirect('http://www.new-site.com/new-page-slug', 301);
            exit;
        }
        // 可以添加更多的if条件来处理其他页面
    }

    注意:直接修改主题文件有风险,升级主题后代码可能丢失。


设置完成后的检查清单

  1. 浏览器测试

    • 在浏览器中输入老网站的URL,确认是否跳转到正确的新URL。
    • 检查地址栏,确认最终显示的是新URL。
    • 使用不同的页面进行测试(首页、内页)。
  2. 检查HTTP状态码

    • 使用在线工具(如 Redirect Checker)输入你的老URL。
    • 工具会返回HTTP状态码,必须是 "301 (Moved Permanently)",如果是302或其他,说明配置有误。
  3. Google Search Console (GSC) / 百度站长平台

    • 旧网站:在GSC中提交旧的Sitemap,并监控“旧页面”在索引中的状态,它们会逐渐被移除。
    • 新网站:在GSC中提交新的Sitemap,并监控“新页面”的收录情况和点击率。
    • 你可以在GSC的“旧网站”属性中设置“网站地址更改”(Change of address),将新网站添加进去,这会帮助Google更好地理解迁移关系。
  4. 监控流量和排名

    • 设置Google Analytics或百度统计,密切观察流量变化。
    • 在几周到一个月内,你应该会看到新网站的流量逐渐回升并超过旧网站,这表明权重传递成功。

为老网站设置301跳转是一项技术性工作,但遵循上述步骤和原则,可以顺利完成。核心是确保准确性(1:1映射)和全面性(所有流量都经过301),做好这一步,你的网站迁移将平稳过渡,最大程度地保留来之不易的SEO价值。