301 Redirect เป็นการเปลี่ยนเส้นทางแบบถาวร ส่งทราฟิกจากหน้าที่ไม่มีอยู่แล้วไม่หน้าที่มีอยู่ หรือหน้าใหม่ที่เพิ่งสร้างขึ้น ซึ่งเจ้าลิงค์ 301 Redirect นี้ไม่ใช่แค่ส่งคนไปเส้นทางอื่นเพียงเท่านั้น แต่ยังเป็นมิตรกับเหล่าเครื่องมือค้นหาที่สุดเลยก็ว่าได้

301 Redirects คืออะไร

301 หมายถึง รหัสสถานะของ HTTP สำหรับประเภทของ redirect (การเปลี่ยนแปลงเส้นทางหน้าเว็บ) โดย 301 redirect สามารถทำได้โดยการเพิ่มโค้ดลงในไฟล์ .htaccess ที่อยู่ในเซิร์ฟเวอร์ และในหลายๆ กรณี 301 เป็นวิธีเปลี่ยนแปลงเส้นทางหน้าที่ดีที่สุดสำหรับเว็บไซต์แล้ว

(จริงๆ เราสามารถแก้ไขได้ผ่านไฟล์ httpd.conf แต่การแก้ไขใน .htaccess ยังเป็นวิธีที่ง่ายและนิยมมากที่สุด)

 

301 Redirects VS 302 Redirects

302 Redirects มักจะถูกใช้แบบชั่วคราวเท่านั้น และแม้ว่าจะเป็นการเปลี่ยนแปลงเส้นทางเหมือนกัน แต่ 302 จะไม่ส่งผลใดๆ กับอันดับ SEO ในขณะที่ 301 จะใช้เปลี่ยนแปลงเส้นทางถาวรไปยังหน้าใหม่และด้วยเหตุผลบางอย่าง กลายเป็นว่า 301 มีผลอย่างมากต่ออันดับ SEO

มีปัจจัยหลายอย่างมากที่คุณควรพิจารณาเปลี่ยนมาใช้ 301 redirects ที่ไม่ใช่แค่เรื่อง SEO เช่น

1. คุณอาจจะเปลี่ยนโดเมนของเว็บไซต์ใหม่และจะต้องการส่ง traffic ทั้งหมดไปยัง URLs ใหม่

2. คุณกำลังจะรวมทั้ง 2 เว็บไซต์เข้าด้วยกัน และต้องการให้แน่ใจว่าลิงก์ที่ใช้ไม่ได้แล้วจะถูก redirected ไปยังหน้าใหม่

3. คุณมี URL หลายรายการสำหรับหน้า home page ของคุณ เช่น http://www.example.com, http://www.example.com/home  และ/หรือ

http://www.home.example.com  ในกรณีนี้ วิธีที่ดีที่สุดคือการ redirect หรือเปลี่ยนเส้นทางลิงก์ทั้งหมดไปยังปลายทาง / URL ที่เป็น “Canonical (หน้าหลัก)” เพียงที่เดียว

301 Redirect ดำเนินการอย่างไร บน Apache Server

เพื่อที่จะสร้าง 301 Redirects เราจะต้องแก้ไขไฟล์ .htaccess บนเซิร์ฟเวอร์ของเราก่อน หากเราใช้เซิร์ฟเวอร์ภายนอกเช่น ISS หรือ NGINX อาจจะต้องติดต่อผู้ดูแลเซิร์ฟเวอร์แทน

ต่อมา บนเซิร์ฟเวอร์นั้นจะต้องมีการติดตั้งโมดูล apache ‘mod_rewrite’ เสียก่อน แต่ปกติแล้วมักจะมีมาแต่เดิมอยู่แล้ว

ไฟล์ .htaccess มักเป็นไฟล์แบบซ่อน (hidden file) การจะเข้าไปแก้ไขได้ต้องลบ ‘.’ ออกก่อนจึงจะสามารถเปิดแก้ไขใน text editor ได้ แต่ทำให้แน่ใจก่อนว่าทุกอย่างถูกแบ็คอัพไว้ก่อนเผื่อเกิดผิดพลาด และการแก้ไข ควรจะต้องทำบน text-base editor หรือโปรแกรมแก้ไขตัวอักษรเท่านั้น เพราะหากฟอร์แมตคลาดเคลื่อนอาจทำให้โค้ดเสียหายได้

Mod_rewrite และ ReWriteEngine ใน Apache Server

เปิดใช้งานอย่างไร?

การเปิดใช้งาน ReWriteEngine สามารถเพิ่มโค้ดด้านล่างในไฟล์ .htaccess ได้เลย

Options +FollowSymLinks
RewriteEngine on

โค้ดด้านบนจำเป็นต้องใส่เพียงครั้งเดียวเท่านั้น จากนั้นเราก็จะสามารถเพิ่ม 301 redirects ในหน้าไหนก็ได้แล้ว

Redirect ทำงานยังไง?

Redirect หน้าใดหน้าหนึ่งไปยังอีกหน้าหนึ่ง:

Redirect 301 /retiredpage.html http://www.example.com/newpage.html

Redirect ไดเรคทอรีทั้งหมดไปยังหน้าใหม่:

RedirectMatch 301 ^/oldname/ http://www.example.com/newname/

Redirect จากโดเมนหนึ่งไปยังโดเมนใหม่:

RedirectMatch 301 ^(.*)$ http://www.xyz.com

Redirect หลายๆ หน้าไปยังหน้าหลักหน้าเดียว:

RewriteCond %{HTTP_HOST} ^xyz\.com [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(default|index)\.(html|php|htm)\ HTTP/ [NC]

RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.example.com/$1 [L,R=301]

ตัวอย่างที่กล่าวไปด้านบน ใช้โค้ด 2 บรรทัดแรกเพื่อ redirect เว็บที่ไม่ใช่ www. ไปยัง www.

สองบรรทัดในลำดับถัดมา คือ redirect code URL ต่างๆ ที่มีการอ้างอิงถึง html / php / htm หรือ default / main / index ไปยัง URL โฮมเพจของ Canonical/หน้าหลัก เช่น www.example.com/html, www.example.com/default จะถูก redirected ไปยัง www.example.com

การดำเนินการ 301 redirects  ประเภทนี้เราจะสามารถรวม URL หลายรายการไว้ในหน้าเดียวได้ เพื่อรองรับการจัดอันดับของหน้าอื่นๆ ด้วย

หลังจากที่เราทำทั้งหมดนี่แล้ว search engine จะใช้เวลาสักระยะหนึ่งในการค้นหาและเรียนรู้ใหม่อีกรอบว่าลิงค์นี้ redirect ไปที่ไหน จากนั้นจึงส่งต่อไปยังหน้าเพจใหม่