网站修改域名服务器图解步骤:小白也能搞定的迁移指南
很多老板自己不会代码想做网站,但更头疼的是后期运维。明明只是想把服务器换掉,或者换个新域名,结果一动手网站就挂了,客户全跑了。别慌,今天这篇【网站修改域名服务器】的实操攻略,就是为你准备的。咱们不整那些虚头巴脑的理论,直接上【图解步骤】,手把手教你怎么安全、平滑地完成这次“搬家”。
需求分析:为什么你要动域名和服务器?
在动手之前,先搞清楚自己到底要干嘛。很多新手一上来就改配置,改着改着就乱了。
1. 换域名(品牌升级或备案问题)
比如你原来的域名 old-site.com 快到期了,或者公司换了牌子,想启用 new-brand.cn。这时候你需要做三件事:解析切换:把新域名的 DNS 指向新的或旧的服务器 IP。
301 重定向:告诉搜索引擎,老网站的所有流量都转到新域名,权重不丢失。
SSL 证书更新:新域名得重新申请证书,不然浏览器会报“不安全”。2. 换服务器(性能提升或成本优化)
华东地区的很多中小企业,早期用的是单机 ECS,现在流量大了,想换成更高配置的集群,或者为了合规性换到特定的机房。这时候重点在于:数据完整性:数据库、图片、静态资源必须一点不少地搬过去。
IP 绑定检查:Nginx 或 Apache 配置里有没有写死旧 IP?
防火墙与白名单:新服务器的安全组规则有没有开对端口(80, 443)?3. 核心痛点:怕断网、怕丢数据
这是大家最担心的。所以,我们的核心原则是:“双轨并行,灰度切换”。在确认新环境 100% 没问题之前,千万别动旧环境的 DNS 解析。
环境准备:工欲善其事,必先利其器
在开始【网站修改域名服务器】的操作前,请准备好以下工具和账号权限。缺一个都可能导致中途卡壳。
1. 必要的账号与权限域名控制台权限:阿里云、腾讯云或 Cloudflare 的域名管理权限。
服务器 root 权限:新旧两台服务器的 SSH 登录密钥或密码。
CMS 后台权限:比如 WordPress 管理员账号,或者定制站的超级管理员。2. 备份!备份!备份!
这是铁律。不管你是用宝塔面板还是原生命令行,先做全量备份。数据库备份:导出 .sql 文件。
文件备份:打包整个网站目录(wwwroot)。
配置备份:保存好 Nginx/Apache 的配置文件。3. 环境一致性检查
很多坑是因为新服务器环境跟旧服务器不一样造成的。PHP 版本:旧的是 7.4,新的是 8.2?很多老 CMS 在 8.x 下会报错。确保版本一致或兼容。
数据库版本:MySQL 5.7 和 8.0 在字符集排序规则上有些差异,迁移前确认。
W3C 标准合规性:在迁移前,建议用 W3C 的 HTML 验证器跑一遍旧网站,确保页面结构标准。虽然这跟迁移没直接关系,但能帮你发现一些隐藏的编码错误,避免迁移后出现乱码或样式错乱。核心步骤:图解式迁移流程
这里我们把流程拆解成五个关键节点,你可以截图保存,按步骤执行。
第一步:新服务器环境搭建安装基础环境:在新服务器上安装 Nginx、PHP、MySQL。
部署网站文件:将备份的网站文件上传到新服务器的 /var/www/html/ 目录。
执行命令解压:tar -zxvf site_backup.tar.gz导入数据库:创建新数据库和用户。
导入 SQL 文件:mysql -u root -p new_db backup.sql第二步:修改服务器内部配置
这是最容易出错的地方。网站代码里往往隐藏着旧服务器或旧域名的引用。
1. 修改 CMS 配置
以 WordPress 为例,你需要编辑 wp-config.php:
// 修改数据库名
define('DB_NAME', 'new_database_name');
// 修改数据库用户
define('DB_USER', 'new_db_user');
// 修改数据库密码
define('DB_PASSWORD', 'new_db_password');
// 修改数据库主机(通常是 localhost)
define('DB_HOST', 'localhost');// 【关键】修改站点地址
define('WP_HOME', 'https://new-brand.cn');
define('WP_SITEURL', 'https://new-brand.cn');注意:如果是多站点或子目录安装,WP_SITEURL 可能还包含路径,务必检查。
2. 修改 Nginx 配置
编辑 Nginx 站点配置文件(通常在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/):
server {listen 80;server_name new-brand.cn www.new-brand.cn; # 【关键】这里必须改成新域名root /var/www/html; # 确保指向正确的网站目录index index.php index.html;# 强制 HTTPS 跳转location / {if ($scheme != https) {rewrite ^(.*)$ https://$host$uri permanent;}}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000; # 确保 PHP-FPM 端口正确fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}修改完后,测试配置并重启 Nginx:
nginx -t
systemctl reload nginx第三步:本地测试与内网穿透
千万不要直接改域名解析!
这时候,新网站只能通过新服务器的 IP 访问。但浏览器访问 IP 不会自动加载 SSL 证书,也没法测试域名相关的逻辑。
方案:使用 hosts 文件绑定
在你自己的电脑上,修改 hosts 文件,把新域名指向新服务器的 IP。
Windows 路径:C:\Windows\System32\drivers\etc\hosts
Linux/Mac 路径:/etc/hosts
添加一行:
123.45.67.89 new-brand.cn(123.45.67.89 替换为你新服务器的真实公网 IP)
现在,你在浏览器输入 http://new-brand.cn,就能直接看到新服务器上的网站了。这时候,你可以全面测试:页面能否打开?
登录后台是否正常?
上传图片、发送邮件功能是否可用?
SSL 证书是否生效?(此时可能还没生效,因为证书还没部署)第四步:部署 SSL 证书与配置 301 重定向
1. 申请并部署新域名的 SSL 证书如果是阿里云/腾讯云,直接在控制台申请免费证书,绑定新域名。
下载证书文件(Nginx 格式通常包含 .pem 和 .key)。
上传到服务器 /etc/ssl/ 目录。
修改 Nginx 配置,添加 443 端口监听:server {listen 443 ssl;server_name new-brand.cn www.new-brand.cn;# 【关键】指定证书路径ssl_certificate /etc/ssl/new-brand.cn.pem;ssl_certificate_key /etc/ssl/new-brand.cn.key;# 推荐使用的加密套件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;root /var/www/html;# ... 其他 location 配置同上
}2. 配置旧域名的 301 重定向
在旧服务器的 Nginx 配置中,添加重定向规则,将旧域名所有请求永久重定向到新域名:
server {listen 80;server_name old-site.com www.old-site.com;# 【关键】301 重定向return 301 https://new-brand.cn$request_uri;
}server {listen 443 ssl;server_name old-site.com www.old-site.com;ssl_certificate /etc/ssl/old-site.com.pem;ssl_certificate_key /etc/ssl/old-site.com.key;# 【关键】HTTPS 下的 301 重定向return 301 https://new-brand.cn$request_uri;
}注意:$request_uri 会保留原来的路径和参数,比如 old-site.com/page/1 会跳转到 new-brand.cn/page/1。
第五步:切换 DNS 解析
当新网站在本地 hosts 测试无误,且 SSL 证书部署成功后,就可以正式切换流量了。登录域名控制台。
修改 A 记录:主机记录:@ 和 www
记录值:改为新服务器的 IP。
TTL:设置为 600 秒(或更短),以便全球用户快速刷新缓存。等待生效:使用 ping new-brand.cn 或 nslookup new-brand.cn 检查解析是否已指向新 IP。
不同地区的 DNS 缓存刷新时间不同,可能需要几分钟到几小时。代码/配置示例:常见 CMS 的域名修改脚本
如果你用的是 WordPress,手动改数据库太麻烦,可以用这个 PHP 脚本一键批量替换数据库中的旧域名。
创建文件 search-replace.php 在网站根目录:
?php
// 【安全警告】使用完毕后请立即删除此文件!// 旧域名
$old_domain = 'http://old-site.com';
// 新域名
$new_domain = 'https://new-brand.cn';// 数据库连接配置(从 wp-config.php 复制过来)
define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_user');
define('DB_PASSWORD', 'your_database_password');
define('DB_HOST', 'localhost');// 建立连接
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$conn) {die(Connection failed: . mysqli_connect_error());
}// 获取所有表
$tables = mysqli_query($conn, SHOW TABLES);
$count = 0;while ($table = mysqli_fetch_row($tables)) {$table_name = $table[0];// 对每个表执行替换$result = mysqli_query($conn, SELECT * FROM `$table_name`);$rows = [];while ($row = mysqli_fetch_assoc($result)) {$updated_row = [];foreach ($row as $key = $value) {// 替换字符串值if (is_string($value)) {$value = str_replace($old_domain, $new_domain, $value);}$updated_row[$key] = $value;}$rows[] = $updated_row;}// 更新数据库if (!empty($rows)) {foreach ($rows as $row) {$values = implode(',', array_map('mysqli_real_escape_string', array_values($row)));$columns = implode(', ', array_map('mysqli_real_escape_string', array_keys($row)));// 注意:这里简化了逻辑,实际生产环境建议使用 UPDATE 语句逐条更新以保留 ID// 此脚本仅演示逻辑,生产环境推荐使用 WP-CLI 命令:// wp search-replace 'http://old-site.com' 'https://new-brand.cn' --all-tables$count++;}}
}mysqli_close($conn);
echo Replaced in $count tables. Please verify and delete this file!;
?更推荐的方式:使用 WP-CLI
如果你有 SSH 权限,WP-CLI 是最安全、最高效的工具:
# 进入网站根目录
cd /var/www/html# 执行替换命令
wp search-replace 'http://old-site.com' 'https://new-brand.cn' --all-tables --precise这条命令会自动备份数据库,并精确替换,避免误伤。
常见报错与现场违规问题排查
在实际操作中,华东地区不少老板反馈过以下问题,这里做个针对性解答。
1. 报错:403 Forbidden 或 404 Not Found原因:文件权限问题或路径配置错误。
解决:检查网站目录的所有者,通常应为 www 或 nginx 用户。
命令:chown -R www:www /var/www/html
检查 Nginx 的 root 指向是否正确。2. 报错:SSL 证书不受信任原因:证书链不完整,或域名不匹配。
解决:确保下载的证书是完整链(Full Chain),包含根证书。
检查 server_name 是否包含当前访问的域名。
如果是通配符证书,确保格式为 *.new-brand.cn。3. 现场常见违规问题:ICP 备案与公安备案坑点:很多老板换了服务器,以为备案跟着网站走,其实备案是跟域名和接入商走的。
后果:如果新服务器在电信/联通机房,而你的 ICP 备案只备案在旧服务器所属的接入商,新服务器可能会拦截你的 80/443 端口访问,导致网站无法打开。
解决:在新服务器上提交“接入备案”申请,将域名接入到新服务商。
如果更换了域名,必须重新提交 ICP 备案,且需要等待审核(通常 7-20 个工作日)。
切勿在未备案完成前将 DNS 指向新服务器,否则会被监管系统检测并阻断。4. 邮件发送失败原因:新服务器 IP 可能被列入垃圾邮件黑名单,或 SPF/DKIM 记录未更新。
解决:检查域名的 DNS 解析,确保 SPF 记录包含新服务器的 IP 或邮件服务域名。
使用 mail-tester.com 测试邮件评分,优化发信配置。小结
网站修改域名和服务器,看似简单,实则牵一发而动全身。核心在于备份充分、环境一致、测试到位、平滑切换。
通过上面的【图解步骤】,你应该能清晰地看到从需求分析到最终上线的全过程。记住,不要在生产环境直接改配置,永远先在测试环境或本地 hosts 环境下验证。
对于中小企业老板来说,技术细节可以交给服务商,但流程逻辑必须掌握。只有这样,当服务商出错时,你才能快速定位问题,避免业务长时间停摆。
互动环节:
你在建站或迁移过程中,踩过哪些让你哭笑不得的坑?是备案被驳回?还是代码里硬编码了 IP 导致半天没找出来?欢迎在评论区留言交流,咱们一起避雷!
