wordpress 站点切换域名

137次阅读
没有评论

共计 2781 个字符,预计需要花费 7 分钟才能阅读完成。

wordpress 站点切换域名

背景

站点之前使用的域名是 bwbit.com​,从语义和寓意上来说,都不够清晰,现在重新购买了 opshub.cn​ 的域名,故记录 wordpress 站点切换域名需要做什么。

操作步骤

域名备案

如果站点搭建在大陆的服务器,需要提前进行域名备案,从备案到通过,时长大约在1~2周左右。

申请新域名证书

可参考站内文章:使用 acme 获取免费 https 证书

站点备份

执行变更操作前,先全量备份站点数据。由于我使用了 docker-compose 进行的部署,直接备份整个数据目录即可。

如果变更失败,回滚备份时需要注意权限问题。html 目录需要递归修改为 www-data​ 的属组和属主。

cp -R /usr/local/wordpress/ /usr/local/wordpress-bak-2023-10-18

# ls -l /usr/local/wordpress/volumes
total 8
drwxr-xr-x 6 systemd-coredump root     4096 Oct 17 23:10 database
drwxr-xr-x 5 www-data         www-data 4096 Oct 18 09:54 html

wordpress 配置

  • 网站信息配置,主要检索和旧域名相关的配置,替换为新域名
    • 修改 wps-config.php 为多域名配置,彻底切换完毕后可以彻底移除旧域名

    • $domain = array("bwbit.com", "www.bwbit.com", "opshub.cn", "www.opshub.cn");
      if(in_array($_SERVER['HTTP_HOST'], $domain)){
            define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
            define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);
      }
      
    • 修改 网站介绍:用户​​ –> 个人资料​​、设置​​ –> 常规​​
    • 修改 部分主题配置,例如网站图标,头像,简介,页脚备案信息
    • 修改 MySQL 数据库中 siteurl​、home​ 字段值
    # 进入MySQL容器
    # docker exec -it 5628d525f32f bash
    bash-4.2# mysql -u wordpress -p -A 
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.42 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    # 选择数据库
    mysql> SELECT option_value FROM wp_options WHERE option_name = 'siteurl' OR option_name = 'home';
    ERROR 1046 (3D000): No database selected
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | wordpress          |
    +--------------------+
    2 rows in set (0.00 sec)
    
    mysql> use wordpress;
    Database changed
    
    
    # 查询当前字段值
    mysql> SELECT option_value FROM wp_options WHERE option_name = 'siteurl' OR option_name = 'home';
    +---------------------------+
    | option_value              |
    +---------------------------+
    | https://www.bwbit.com:443 |
    | https://www.bwbit.com:443 |
    +---------------------------+
    2 rows in set (0.00 sec)
    
    # 修改值
    mysql> UPDATE wp_options SET option_value = 'https://www.opshub.cn:443' WHERE option_name = 'siteurl' OR option_name = 'home';
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    
    mysql> SELECT option_value FROM wp_options WHERE option_name = 'siteurl' OR option_name = 'home';
    +---------------------------+
    | option_value              |
    +---------------------------+
    | https://www.opshub.cn:443 |
    | https://www.opshub.cn:443 |
    +---------------------------+
    2 rows in set (0.00 sec)
    
    
  • 文章内容修改,文章内容中可能存在图床或引用链接外链使用的旧域名

    • 此处踩坑了,最开始使用的 Jetpack​​ 插件的导出导入功能。由于文章原始格式是md,在执行导出,本地批量编辑,再导入后 md 格式会变为 html。
    • 因为文章数量不多,选择了直接从后台编辑,将 md 批量复制到本地替换完毕后再覆盖旧内容。
    • 更新记录 2023-10-25 :可以直接在数据库内进行批量替换,sql 如下
    # 仅填入域名,不需要带协议
    UPDATE wp_posts SET post_content = REPLACE( post_content, '旧域名', '新域名' );
    

nginx 配置

我的计算放在家里的服务器,入口在公有云厂商。两个地方都部署了nginx。

  • 需要添加新域名配置
  • 做 301 跳转将旧域名 www.bwbit.com 跳转到 www.opshub.cn
  • 将 opshub.cn 301 跳转到 www.opshub.cn

cdn 配置

腾讯云上给新域名创建cdn。

dns 配置

给新域名添加 cname 解析,指向公有云厂商 cdn 域名。

百度站长平台

  • 新域名提交收录。
  • 旧域名执行网站改版,转到新域名。

引用链接

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2023-10-18发表,共计2781字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)