WordPress วิธีเปลี่ยน URL หลังจากย้ายเว็บ

สำหรับวิธีการเปลี่ยนที่อยู่ URL ของ WordPress เมื่อเรามีการย้ายชื่อโดเมน หรือจะชื่อโดเมนเดิม แต่อาจจะอยากย้ายระบบไปไว้ในโฟเดอร์ เช่น ย้ายจาก xvlnw.com => xvlnw.com/wordpress_old เป็นต้น หรือจะเปลี่ยนชื่อโดเมนไปเลย เช่น xvlnw.com => iamxvlnw.com เป็นต้น วิธีแบบยาก คือเราต้องเข้าไปแก้ไข wp_options ในระบบ​ Database อาจจะแก้ไขผ่าน phpMyAdmin หรือจะแก้ไขไฟล์ .sql แล้ว Import เข้าไปก็ได้ ก็มีหลายท่าให้ทำ

สำหรับวิธีการนี้ ผมจะแนะนำให้ใช้ PHP Code ในการแก้ไข โดยขั้นตอนดังนี้

ขั้นตอนที่ 1: หลังจากย้าย Files & DB ของเว็บไปที่อยู่ใหม่แล้ว ให้ทำการแก้ไขไฟล์ wp-config.php เพิ่มโค๊ดด้านล่างนี้ ไว้ท้ายสุดของไฟล์นะครับ

# Change WordPress URL Somchai@DE - https://cloudhost.in.th
define('RELOCATE',true);
if ( defined( 'RELOCATE' ) AND RELOCATE ) {    
  // Move flag is set
  if ( isset( $_SERVER['PATH_INFO'] ) AND ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) ) 
        $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], "", $_SERVER['PHP_SELF'] );
    $url = dirname( set_url_scheme( 'https://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ) );
    if ( $url != get_option( 'siteurl' ) )
        update_option( 'siteurl', $url );
        update_option( 'home', $url );
}

ขั้นตอนที่ 2: ให้เรียก URL ใหม่ ที่เราต้องการเปลี่ยน เช่น xvlnw.com/old คือตัว URL ใหม่ 1 ครั้ง ตัวโค๊ดด้านบน จะทำการเข้าไป Update Database เป็น URL ใหม่ให้เสร็จเรียบร้อยครับ หลังจากอัพเดต URL ใหม่แล้วครับ และเราสามารถลบโค๊ดในข้อ 1 ออกจาก wp-config.php ได้เลยครับ

ปัญหาเพิ่มเติมที่เจอหลังเปลี่ยน URL

ในกรณีหากเราย้ายจากโดเมนหลัก ไปยัง Sub Folder อย่าลืมอัพเดต .htaccess Rules ด้วยนะครับ โดยวิธีการง่ายๆก็คือ ให้เราเข้าสู่ระบบ wp-admin แล้วไปที่ “ตั้งค่า” > “ลิงก์ถาวร” แล้วจากนั้น กดที่ “บันทึกการเปลี่ยนแปลง” โดยไม่ต้องแก้ไขค่าอะไรครับ สำหรับเมนูภาษาอังกฤษใครหาไม่เจอ หลังล็อคอินแล้วให้ไปที่ /wp-admin/options-permalink.php ครับ

ในกรณีหากเราใช้ Plugin อะไรก็ตาม ที่มีการอ้างอิง Path เช่น Plugin Cache ไฟล์ต่างๆ เราก็ต้องไล่แก้ไขไปตาม Plugin โดยวิธีการโชว์ Error ออกมา ให้เพิ่มคำสั่งนี้ในไฟล์ wp-config.php ไว้ด้านล่างของ PHP Tag นะครับ

define( 'WP_DEBUG', true );

หากไม่มีอะไรผิดพลาด WordPress จะไม่แสดง Error Message อะไรออกมาครับ เป็นอันเสร็จสมบูรณ์ครับ และเราสามารถที่จะลบโค๊ด Debug ออกได้เลย หรือเปลี่ยนค่าเป็น false เพื่อเปิดการทำงานครับ

define( 'WP_DEBUG', false );