迁移到新主机服务商是网站所有者最担忧的任务之一——这是有充分理由的。操作不当时,主机迁移可能在几小时内抹去数月乃至数年积累的 SEO 排名。好消息是,只要方法得当,主机迁移从 SEO 角度来看可以完全安全。本指南提供涵盖整个过程每个阶段的完整清单:迁移前准备、备份和文件传输、DNS 管理、上线前测试和迁移后验证。

为什么主机迁移会影响 SEO

在深入清单之前,了解主机迁移期间哪些具体的 SEO 因素面临风险非常重要。许多网站所有者认为将文件移到新服务器并更新 DNS 就够了。实际上,如果处理不当,有几个与 SEO 相关的因素可能会出问题。

了解这些风险是使下面清单中每个步骤有意义的基础,因为每个步骤都是专门为消除一个或多个风险因素而设计的。

迁移前清单:开始前需要做什么

充分的准备是最重要的阶段。主机迁移中大多数 SEO 问题的发生,是因为站长在开始前没有记录基线数据,导致事后无法诊断问题。

1. 记录当前基线数据

在对当前服务器进行任何操作之前,请全面记录以下数据:

2. 审查完整的 URL 结构

使用 Screaming Frog 或 wget 等工具抓取当前网站的所有 URL。建立一个电子表格,列出每个 URL、其 HTTP 状态码和预估的外链数量。如果迁移期间任何 URL 发生变化,这将成为您的重定向映射表。

# Crawl your website with wget to capture all URLs
wget --spider --recursive --no-verbose --output-file=crawl-log.txt \
  https://yourdomain.com 2>&1

# Extract just the URLs from the log
grep "^--" crawl-log.txt | awk '{print $3}' | sort -u > url-list.txt

# Count total URLs
wc -l url-list.txt

3. 在迁移日前 24–48 小时降低 DNS TTL

这是最常被跳过的步骤,但对于顺利过渡至关重要。DNS 记录上的 TTL(生存时间)值告诉全球解析器缓存该记录的时长。典型值为 3600–86400 秒(1–24 小时)。

如果不提前降低 TTL,在您将 A 记录更新到新服务器后,部分用户可能在长达 24 小时内仍然访问旧服务器,在此窗口期内产生重复内容和不一致的用户体验。

# Check current TTL on your A record
dig yourdomain.com A

# Example output shows TTL value:
# yourdomain.com. 3600 IN A 203.x.x.x
# The number 3600 is the current TTL in seconds

# To verify propagation after lowering TTL, check from multiple resolvers:
dig yourdomain.com A @8.8.8.8
dig yourdomain.com A @1.1.1.1

在迁移日前至少 24–48 小时将 TTL 设置为 300 秒。在开始服务器迁移前,等待降低后的 TTL 传播到全球。迁移确认稳定后,将 TTL 恢复为 3600 或 86400。

备份与迁移:正确操作方法

完整备份不仅仅是复制网站文件。它必须涵盖文件、数据库、电子邮件和服务器配置,以避免丢失在标准文件管理器视图中不可见的数据或设置。

完整备份清单

正确的数据库导出

# Export database using mysqldump (run on old server)
mysqldump -u DB_USER -p DB_NAME \
  --single-transaction \
  --routines \
  --triggers \
  --add-drop-table \
  > backup-$(date +%Y%m%d).sql

# Check backup file size
ls -lh backup-*.sql

# Import on new server
mysql -u NEW_DB_USER -p NEW_DB_NAME < backup-2026XXXX.sql

在更改 DNS 前测试新服务器

这是整个迁移过程中最重要的单一步骤。在将 DNS 指向新服务器之前,编辑本地机器的 hosts 文件,临时将您的域名指向新服务器的 IP 地址。这让您可以在与生产环境相同的环境中测试新服务器,而不影响实时流量。

# On macOS / Linux, edit /etc/hosts
sudo nano /etc/hosts

# Add these lines (replace 1.2.3.4 with new server's actual IP)
1.2.3.4  yourdomain.com
1.2.3.4  www.yourdomain.com

# On Windows, edit C:\Windows\System32\drivers\etc\hosts
# Must be opened as Administrator

测试每个关键页面、登录流程、表单提交和结账流程。验证没有 404 或 500 错误出现。检查所有 CSS 和 JavaScript 是否正确加载。只有当一切完美运行后,才删除 hosts 文件条目并进行 DNS 更改。

在新服务器上设置 301 重定向和 SSL

如果您的迁移涉及任何 URL 结构变化——例如切换 CMS 平台、更改文件扩展名或重组目录结构——您必须毫无例外地为每个更改的 URL 实施 301 重定向。

主机迁移中常见的重定向模式

# Case 1: Changing .php extensions to .html
RewriteRule ^([^/]+)\.php$ /$1.html [R=301,L]

# Case 2: Adding trailing slashes to directory URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

# Case 3: Old query-string URLs to clean slugs
RewriteCond %{QUERY_STRING} ^p=([0-9]+)$
RewriteRule ^index\.php$ /new-post-slug/? [R=301,L]

# Case 4: Moved category path
RewriteRule ^old-category/(.*)$ /new-category/$1 [R=301,L]

验证新服务器上的 SSL 证书

在切换 DNS 之前,确认新服务器上的 SSL 证书有效且涵盖您的域名。无论您使用 Let's Encrypt 还是付费 SSL 证书,都必须在上线前处于活跃状态并正确配置。使用 DirectAdmin 主机,您可以直接从控制面板颁发和管理 SSL 证书。

# Test SSL certificate from your local machine (after editing hosts file)
curl -I https://yourdomain.com --resolve yourdomain.com:443:1.2.3.4

# Check SSL certificate expiry date
echo | openssl s_client -servername yourdomain.com \
  -connect yourdomain.com:443 2>/dev/null | \
  openssl x509 -noout -dates

专业提示:如果迁移 WordPress 网站,测试前务必更新数据库中的 siteurl 和 home 值以指向新服务器。使用 WP-CLI:wp search-replace 'http://old-server-ip' 'https://yourdomain.com' --all-tables。不执行此步骤,CSS、JavaScript 和图片文件仍会从旧服务器加载,导致页面看起来已损坏,即使文件已正确复制。

迁移阶段:每个阶段需要检查什么

Phase Actions Required Tools Expected Result
迁移前 2 天(准备) 记录基线数据、降低 TTL、建立重定向映射表 GSC、dig、Screaming Frog TTL = 300 秒
迁移当天 完整备份、上传文件、导入数据库、配置 SSL FTP/SCP、mysqldump、DirectAdmin 网站在新服务器上运行
DNS 切换前 通过 /etc/hosts 测试、验证 SSL、测试所有功能 浏览器、curl、openssl 零 404/500 错误
DNS 切换 更新 A 记录、验证全球传播 DNS 控制面板、whatsmydns.net 新 IP 传播 <10 分钟
迁移后 1 天(监控) 检查 GSC 错误、抓取统计、速度分数 GSC、PageSpeed Insights、curl 无新错误,速度稳定

迁移后验证:最终清单

一旦 DNS 在全球完全传播,您的工作还没有结束。迁移后验证阶段与迁移本身同样重要——在这里您确认一切正常运行,或在问题对流量产生重大影响之前发现并解决它们。

使用 curl 进行技术 SEO 检查

# Check HTTP status codes for key pages
curl -I https://yourdomain.com/
curl -I https://yourdomain.com/important-page.html

# Verify HTTP redirects to HTTPS (must be 301, not 302)
curl -I http://yourdomain.com/

# Check robots.txt is accessible and correct
curl https://yourdomain.com/robots.txt

# Check sitemap loads without errors
curl https://yourdomain.com/sitemap.xml | head -20

# Measure TTFB (Time to First Byte)
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" \
  https://yourdomain.com/

迁移后清单

提交站点地图并请求重新索引

迁移确认稳定后,通过 Google Search Console 再次提交站点地图,以加速重新抓取过程。如果迁移期间 URL 发生了变化,使用 Search Console 中的 URL 检查工具逐一为您最重要的 5–10 个页面请求索引。您也可以使用 IndexNow 同时通知 Bing 和 Yandex。

# Submit URLs via IndexNow
curl -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "yourdomain.com",
    "key": "YOUR_INDEXNOW_KEY",
    "urlList": [
      "https://yourdomain.com/",
      "https://yourdomain.com/page1.html",
      "https://yourdomain.com/page2.html"
    ]
  }'

常见错误及如何避免

根据帮助数百位客户完成主机迁移的经验,以下是造成最大 SEO 损害的错误及其避免方法。

错误 1:忘记迁移隐藏文件

除非您明确启用"显示隐藏文件",否则 .htaccess、.env 和 .htpasswd 等文件在大多数 FTP 客户端中是不可见的。始终验证这些文件已被迁移。.htaccess 文件尤其重要,它通常包含对网站正常运行至关重要的重定向规则、缓存标头和安全设置。

# Use SCP which transfers hidden files automatically
scp -r oldserver:/home/user/public_html/. newserver:/home/user/public_html/

# Or in FileZilla: Server menu > Force showing hidden files

错误 2:数据库 URL 仍指向旧服务器

WordPress 和许多其他 CMS 将网站自身的 URL 存储在数据库中。将数据库导入新服务器后,这些存储的 URL 仍然引用旧服务器。这会导致 CSS、JavaScript 和图片从旧服务器加载——使网站看起来已损坏。

# Use WP-CLI to search and replace URLs in the database
wp search-replace 'https://old-domain.com' 'https://new-domain.com' \
  --all-tables --precise --report-changed-only

# Or use the database update queries directly:
UPDATE wp_options SET option_value = 'https://new-domain.com'
  WHERE option_name IN ('siteurl', 'home');

错误 3:未重新创建定时任务

计划性定时任务——例如自动邮件通知、备份任务或缓存清除——不会随您的文件自动迁移。您必须在新服务器上手动重新创建它们。使用 DirectAdmin,可以直接从控制面板的定时任务部分管理定时任务。

错误 4:忘记更新 MX 记录

如果您的网站使用托管在同一服务器上的电子邮件,并且您也在迁移电子邮件账户,则必须确保迁移后 MX 记录指向新服务器。不这样做意味着发送到您域名的邮件仍然会被投递到旧服务器或完全退回。

# Verify current MX records
dig yourdomain.com MX +short

# Check against a specific DNS server to confirm propagation
nslookup -type=MX yourdomain.com 8.8.8.8

迁移后的 SEO 恢复时间线

成功完成主机迁移后,如果在最初几周内看到排名波动,请不要惊慌。随着 Google 在新服务器上重新评估您的网站,这是完全正常的行为。以下是预期的典型时间线:

迁移后的前 4–6 周每周监控 Google Search Console 报告至关重要。早期发现抓取错误或覆盖率问题,可以让您在问题导致大量流量损失之前加以解决。

常见问题解答

迁移主机后 SEO 排名会下降吗?

如果计划周全并正确设置了 301 重定向,SEO 排名不会永久下降。Google 通常需要 1–4 周重新抓取和索引迁移后的页面。在此期间可能出现小幅波动,但排名应会稳定,若新服务器比旧服务器更快,排名甚至可能提升。

迁移主机时每个 URL 都需要 301 重定向吗?

如果迁移到新主机服务商但保持相同的域名和 URL 结构,则不需要 301 重定向,因为 URL 没有变化。但如果同时更改了 URL 格式——例如从 /page.php 改为 /page.html——则必须为每个更改的 URL 设置 301 重定向,以保留链接权重并防止 404 错误。

迁移前应提前多久降低 DNS TTL?

应在迁移前至少 24–48 小时将 DNS TTL 降至 300 秒(5 分钟)。这样可以让降低后的 TTL 传播到全球 DNS 解析器,当您更新 A 记录指向新服务器时,变更将在全球范围内 5–10 分钟内生效,而无需等待原始 TTL 期限结束。

如何在更改 DNS 前测试新主机?

编辑本地机器的 hosts 文件,临时将您的域名指向新服务器的 IP 地址。在 macOS/Linux 上,编辑 /etc/hosts 并添加一行如 '1.2.3.4 yourdomain.com'。打开浏览器测试所有关键页面、表单、登录和结账流程。只有在新服务器上一切正常后才更新 DNS。

AsiaGB 提供的 DirectAdmin 主机

AsiaGB 主机包含完整的 DirectAdmin 支持、PHP 8.3、MySQL,起价仅需 500 泰铢/年。

查看主机计划