由于我的WordPress是搭在亚马逊的AWS上的,免费体验12个月的版本,系统停止后启动会更改其公有DNS,尽管我尽量不去停止这个已启动的实例,但是有时候却不得不停止该实例,因此就出现了WordPress中域名变化的问题,导致无法使用WordPress,通过网上查询也查到了主流的解决办法,根据我当前的需求又添加了一些额外的修改,最后我写成了一个shell脚本,代码如下:
if [ "$#" -eq "2" ];then
echo "My old domain is $1"
echo "My new domain is $2"
else
echo "Usage: `basename $0` old.com new.com"
echo "You provided $# parameters,but 2 are required."
exit
fi
old_domain=$1
new_domain=$2
mysql -u用户名 -p密码 wordpress_blog <<EOF
UPDATE wp_options SET option_value = replace( option_value, '${old_domain}', '${new_domain}' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, '${old_domain}', '${new_domain}' ) ;
UPDATE wp_posts SET guid = replace( guid, '${old_domain}', '${new_domain}' ) ;
UPDATE wp_postmeta SET meta_value = replace( meta_value, '${old_domain}', '${new_domain}' ) WHERE meta_key = '_menu_item_url';
EOF
注意:代码中用户名和密码需要修改为自己的MySQL用户名和密码。
上述代码保存为后缀名为.sh文件,添加该文件可执行权限,按照提示执行该脚本即可。