前两天博客域名从http://blog.songer.me换成了http://wpsong.com把后台的网址URL简单改改就可以了,没想到所有的上传图片都无法显示。鼠标移到图片上一看地址,域名还是老域名,看来光改改全局变量还是不够的,老的图片附件地址和上传的附件都一起捆绑保存到了mysql数据库里了(wordpress这点上还需要好好改进下啊)。
这也难不倒我,不就是几句SQL语言嘛,以前好歹也研究过,正打算找下语法复习下的时候,发现。。。网上已经有别人写过了。。。汗下 那就贴上来吧 呵呵 下面的所有标点符号都要改用英文半角,注意下下
首先介绍下SQL替换命令
UPDATE 表名 SET 字段 = REPLACE(字段,'替换内容','替换值');
示例如下:
UPDATE wp_options SET option_value =REPLACE(option_value,'http://www.old-domain.com','http://www.new-domain.com');
注意上面的标点要都要用英文半角。其中wp_options就是表名,option_value就是表wp_options里的一个字段,wp_options里有siteurl和home的值。
一般只要执行以下命令,就可完成域名的修改:
修改option_value里的站点url和主页地址:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
更正文章中内部链接及附件的地址:
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');
更正wordpress文章默认的永久链接:
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com','http://www.new-domain.com');
总的代码合集:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com','http://www.new-domain.com');
剩下的就是域名的301重定向了,具体见:网站更改域名之301重定向
PS:后来一想,phpmyadmin里面直接备份一份到本地,随便一个文本文件把新旧域名复制粘贴下就ok了。。。。更简单了