ปรกติจะไม่ยุ่งยากขนาดนี้ แต่ข้อมูลเก่ามันเยอะ และ link ไปหลายที่เลยต้องทำ redirect ไว้ซักหน่อย และ จดไว้กันลืม

  1. Back up ข้อมูลต่างๆ ที่สำคัญ เช่น wp-content/uploads/, wp-content/theme/, wp-content/plugins/, .htaccess, wp-config.php และ database ไว้ก่อน
  2. สร้าง blog ไว้ที่ url ใหม่แล้ว (อันเดิมใช้ wordpress Version 2.9.1 อันใหม่เป็น Version 2.9.2 ไม่ต่างกันมากเท่าไหร) เอา db ลงซะ
  3. Copy wp-config.php เดิม มาแก้นิดหน่อยเช่น db-username, password และใส่ใน blog ใหม่
  4. แก้ข้อมูลใน database ที่ link ไปที่ blog เก่า โดยใช้ function replace ของ mysql เช่น

    UPDATE `wp_options` SET `option_value` = REPLACE(`option_value`,’v6hp.in.th’,'blog.v6hp.in.th’);
    UPDATE `wp_comments` SET `comment_author_url` = REPLACE(`comment_author_url`,’v6hp.in.th’,'blog.v6hp.in.th’);
    UPDATE `wp_posts` SET `guid` = REPLACE(`guid`,’v6hp.in.th’,'blog.v6hp.in.th’);
    UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`,’v6hp.in.th’,'blog.v6hp.in.th’);
    UPDATE `wp_postmeta` SET `meta_value` = REPLACE(`meta_value`,’/var/www/sites/v6hp/v6hp.in.th/subdomains/www/html/wp-content/uploads/’,”);

  5. upload wp-content/uploads/, wp-content/theme/, wp-content/plugins/, .htaccess กลับเข้าไปใน site ใหม่
  6. แก้ .htaccess ของ site เก่าให้ redirect ไปที่ site ใหม่ทั้งหมด (ผมเอาฉพาะที่เกี่ยวกับ blog และ post ล่าสุดคือ Blog moved to …) RewriteRule ชุดแรกเพื่อ check Blog moved to … ให้ไปที่ url ใหม่ ส่วนชุดที่สองคือ check url ที่ขึ้นต้นด้วย category reference, tag และปี โดยผมเอา prefix พวกนี้มาจาก sitemap.xml

    <IfModule mod_rewrite.c>
    RewriteEngine On
    Options +FollowSymLinks
    RewriteBase /
    RewriteRule ^relax/blog-moved-to-blog-v6hp-in-th/$ http://blog.v6hp.in.th/
    RewriteRule ^(wp-content|2008|2009|2010|about|author|category|myd-i-y|myexperiment|myknowledge|mymelody|one-day-one-blog|relax|tag|webdesign)/(.*)$ http://blog.v6hp.in.th/$1/$2 [R=301,L]
    </IfModule>

  7. ลัลลากับ blog ใหม่