[WordPress] มาเปลี่ยนให้เว็บของเราเป็น https กัน

หลังจากดองเรื่องนี้มานานมากก Plan ไว้ว่าจะเปลี่ยนตั้งแต่ปลายปี 15 และ แต่ก็ยุ่งๆมาตลอดคิดได้ว่า ถ้าไม่เปลี่ยนอีกเดี๋ยวก็โดนบังคับอยู่ดี สู้เสียเวลาเปลี่ยนเลยดีกว่า จาก http:// เป็น https://

ทำไมต้องเปลี่ยนหละ ?

  • อยากได้ความปลอดภัยเพิ่มขึ้น เพราะ ตัว Https มัน คือ HTTP over SSL โดยทำงานบน Port 443 ครับ ข้อมูลถูก้ขารหัส
  • มีผลกับการทำ SEO เพราะ Google มองว่าเว็บที่มี Https มีภาษีดีกว่าเว็บที่ไม่ได้มีครับ
  • มันดูน่าเชื่อถือ
  • รำคาญ Chrome ที่มันแจ้งเตือนครับ - ที่ผมเปลี่ยน เพราะ เรื่องนี้แหละ 5555

มาปรับกันเถอะ

เมื่อเรารู้แล้วว่าเจ้า https:// มันดีอย่างไร แล้วขั้นถัดมา คือ การปรับ WordPress โดยมี 3 Step ใหญ่ (อ่านให้จบก่อนทำนะครับ)

  • เตรียมตัว
  • บังคับปรับ WordPress เป็น https://
  • เก็บกวาดตัวอื่นๆ ที่อยู่รอบข้าง

1. เตรียมตัว

  • ต้องมีตัว SSL certificate ถ้าเมื่อ 2-3 ปีก่อน น่าจะเสียเงินพอสมควรเลย แต่ตอนนี้มีพระเอมาแล้วครับ คือ Let's Encrypt (ต้องขอบคุณทาง THZHost ที่ช่วย Guide และทำให้ครับ)
  • ก่อนจะทำอะไร อย่าลืม Backup ครับ
  • จดไว้กันลืม
    • พวก App หรือ Social Service ต้องไปปรับเปลี่ยน อย่าง Facebook หาใครจะแชรฺ์ค้องทำ app id อย่าลิมไป Update URL ด้วย
    • Google Service อย่าง Analytics หรือ Adsense ค้องปรับ URL นะ
    • Link เก่าๆ ที่ส่งไว้ ต้องใช้ได้ด้วยนะ

2. บังคับปรับ WordPress เป็น https://
(อ่านให้จบก่อนทำ)

  • เปลี่ยนให้เว็บที่ HTTPS โดยทำจากหลังบ้านก่อน ตัว Admin นั่นเองครับ โดยปรับเข้าไปที่ Host หาไฟล์ที่มีชื่อว่า wp-config.php ให้เพิ่มคำสั่งตามด้านล่างเลยครับ
define('FORCE_SSL_ADMIN', true);
  • บังคับทางหลังบ้านแล้ว ไปปรับหน้าบ้านด้วย โดยไปที่ Menu Setting >> General แล้วปรับค่าให้เป็น https://  ดังรูป
  • แก้ข้อมูลเก่าๆ ของโพสที่เคยทำไป พวก Link ข้อมูล และรูปภาพทั้งหลายครับ โดยมันมี 2  Style ถ้าเอาชัวร์ ตรวจสอบให้เรียบร้อยก่อน
  1. แบบ "Double Quote" - ส่วนใหญ่ ถ้าเขียน Content โดยใช้ Visual ของ WordPress ได้แบบนี้กันนะ แก้ไขโดยการ Run Query ตามนี้
UPDATE wp_posts 
SET   post_content = ( Replace (post_content, 'src="//', 'src="https://') )
WHERE  Instr(post_content, 'jpeg') > 0 
        OR Instr(post_content, 'jpg') > 0 
        OR Instr(post_content, 'gif') > 0 
        OR Instr(post_content, 'png') > 0;
  1. แบบ 'Single Quote' แก้ไขโดยการ Run Query ตามนี้
UPDATE wp_posts 
SET   post_content = ( Replace (post_content, "src='https://", "src='//") )
WHERE  Instr(post_content, 'jpeg') > 0 
        OR Instr(post_content, 'jpg') > 0 
        OR Instr(post_content, 'gif') > 0 
        OR Instr(post_content, 'png') > 0;
  1. Note: เดี๋ยวก่อน อย่าลืมตรวจสอบว่าได้ Backup ข้อมูล หรือยังนะ และ Query นี้สำหรับ MySQL นะครับ และก็มันมีอีก หลายๆ Table มาที่ต้องปรับทั้งในตัว WordPress Core และตัว Table ของ Plugin เอง
# ตัวอย่าง Query อื่นๆ
# Update internal pingbacks
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://yoursite.com', 'https://yoursite.com');
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'http://www.yoursite.com', 'https://www.yoursite.com');

# Update YouTube embeds
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.youtube.com', 'https://www.youtube.com');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://img.youtube.com', 'https://img.youtube.com');

# Update Vimeo embeds
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://player.vimeo.com/', 'https://player.vimeo.com/');

# Update Flickr embeds
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://farm', 'https://farm');

# Update Slideshare embeds
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.slideshare.net', 'https://www.slideshare.net');

# เห็นแล้วว่ามันเยอะ และต้องเก็บมันให้ครบ
  • ทำการ Redirect แม้ว่าเข้ามาแบบ http:// แต่ตัว Web Server บังคับให้ไปแบบ https:// สามารถแก้ในไฟล์ .htaccess ให้มันทำการ redirect (301) ด้วยคำสั่ง ดังนี้
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
  • จากข้อที่แล้ว ถ้าขี้เกียจแก้ข้อมูลเก่า และไปปรับไฟล์ .htaccess แล้วหละก็ เรามีของมานำเสนอครับ ลองใช้ Plug-in "Really Simple SSL" ดู กด Activate ปุ๊บจบเลยยยย ผมเจอ Plug-in นี้ช้าไป T___T
  • Note: หลังจากอ่านมาจากหลายๆที่ เช่น ใน StackExchange แนะนำว่าไม่ควรทำนะ กับการไป Update DB ตรงๆ ปัญหาที่สำคัญ คือ เราต้องเก็บให้ครบ
  • เสร็จแล้ว หากใครใช้ Plugin ที่ช่วยทำการ Cache อย่าง เช่น WP Super Cache, W3 Total Cache และ WP Fastest Cache เป็นต้น อย่าลืม Clear Cache นะครับ ถ้าจะให้ดีลอง Deactivate แล้วค่อย Activate กลับมาครับ

3. เก็บกวาดตัวอื่นๆ ที่อยู่รอบข้าง

  • หลังจากปรับแก้ตัว WordPress ไปแล้ว มาดูที่จดไว้กันลืมในข้อที่ 1 ดีกว่าครับ
  • App หรือ Social Service - สำหรับเว็บนี้ผมมีเฉพาะ Facebook อย่างเดียวครับ สิ่งที่ทำ คือ ไปปรับให้มันรู้จักกับ url ใหม่ที่เป็น https://

Google Service

  1. Web Console
  1. Google Service: Analytics - ปรับให้มันรู้จักกับ https:// อย่าลืมแก้ให้มันเชื่อมกับ web console ด้วยนครับ ถ้ามีกการผูกความสัมพันธ์ไว้
  1. Google Service: AdSense

ถ้ามี Service อื่นๆ อย่าง เช่น Bing Webmaster Tools อย่าลืมไปตามแก้ด้วยนะครับ หรือ กำหนด Url ให้ทำเป็น Relative Path ได้ หลังจากทำมาทั้งหมดนี้ เว็บของเราดูน่าเชื่อถือในสายตาของ User และบรรดา Bot ของ Search Engine แล้วครับ ^__^


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.