Apache: redirect

ในฐานะ System Architect และ Technical SEO Specialist เราทราบดีว่าการจัดการโครงสร้างลิงก์ (Link Structure) ของเว็บไซต์เป็นหัวใจสำคัญของการทำ SEO การย้ายหรือเปลี่ยนแปลง URL ไม่ว่าด้วยเหตุผลของการปรับปรุงเว็บไซต์ (Redesign) หรือการทำแคมเปญชั่วคราว จำเป็นต้องมีการจัดการ Redirect อย่างถูกต้อง เพื่อให้ Search Engine อย่าง Google สามารถเข้าใจการเปลี่ยนแปลงและส่งค่า Page Authority ต่อไปยังเนื้อหาใหม่ได้อย่างสมบูรณ์

แม้ว่าการตั้งค่า Redirect จะทำผ่าน Web Server Configuration File (เช่น Apache’s .conf) แต่ในมุมมองของ System Specialist การจัดการข้อมูลเหล่านี้ควรถูกจัดเก็บและบริหารจัดการอย่างเป็นระบบในฐานข้อมูลหลัก ซึ่งในที่นี้เราจะใช้ PostgreSQL เพื่อจำลองการจัดการแผนที่การ Redirect (Redirect Mapping) อย่างมีประสิทธิภาพ

💡 ทำความเข้าใจหลักการ Redirect และ HTTP Status Codes

Redirect ไม่ใช่แค่การเปลี่ยนหน้าเว็บ แต่คือการส่งสัญญาณสถานะ (Status Code) ให้กับ Search Engine ซึ่งแต่ละรหัสมีความหมายที่แตกต่างกันอย่างชัดเจน:

  • 301 Moved Permanently: ใช้เมื่อคุณย้าย URL อย่างถาวร (Permanent Move) เป็นการบอก Google ว่าลิงก์เดิมได้เปลี่ยนไปอยู่ที่นี่ตลอดไป นี่คือตัวเลือกที่ควรใช้บ่อยที่สุดในการทำ SEO
  • 302 Found / Moved Temporarily: ใช้เมื่อการย้ายเป็นเพียงชั่วคราว (Temporary Move) เช่น การบำรุงรักษาเว็บไซต์
  • 410 Gone: ใช้เมื่อเนื้อหานั้นถูกลบออกอย่างถาวร และไม่มีแผนจะนำกลับมาใช้ใหม่

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

⚙️ การจัดการ Redirect Mapping ด้วย PostgreSQL

แทนที่จะใช้คำสั่ง Redirect โดยตรง เราจะสร้างตารางใน PostgreSQL เพื่อเก็บข้อมูลการแมป (Mapping) ของ URL เก่าและ URL ใหม่ พร้อมระบุสถานะโค้ด เพื่อให้ระบบแอปพลิเคชันของเราสามารถดึงข้อมูลเพื่อสร้าง Redirect ได้อย่างเป็นระเบียบและตรวจสอบย้อนหลังได้

1. สร้างตารางสำหรับเก็บข้อมูล Redirect

เราจะสร้างตารางชื่อ redirect_map เพื่อเก็บข้อมูลนี้:

SQL

CREATE TABLE redirect_map (
    id SERIAL PRIMARY KEY,
    old_url VARCHAR(255) NOT NULL UNIQUE,
    new_url VARCHAR(255) NOT NULL,
    status_code INTEGER NOT NULL,
    reason TEXT,
    is_active BOOLEAN DEFAULT TRUE
);

2. การบันทึกข้อมูล Redirect Mapping

สมมติว่าเราต้องการย้ายหน้าสินค้าเก่า /old-product-page ไปยังหน้าใหม่ /new-product-page อย่างถาวร (301) และอีกหน้า /temp-promo ที่ใช้ชั่วคราว (302):

SQL

INSERT INTO redirect_map (old_url, new_url, status_code, reason) VALUES
('apple/old-link', 'apple/new-link', 301, 'Permanent move for SEO'),
('banana/old-link', 'banana/new-link', 301, 'Product category update'),
('orange/temp-link', 'orange/current-link', 302, 'Temporary maintenance');

3. การเรียกดูแผนที่ Redirect (Query)

เมื่อระบบแอปพลิเคชันต้องการตรวจสอบว่า URL ที่ผู้ใช้เข้าถึงนั้นต้องถูก Redirect หรือไม่ ก็สามารถเรียกใช้คำสั่งนี้ได้:

SQL

SELECT old_url, new_url, status_code FROM redirect_map WHERE old_url = 'apple/old-link' AND is_active = TRUE;

✅ บทสรุปสำหรับ Senior Architect

การจัดการ Redirect ที่สมบูรณ์แบบต้องอาศัยความเข้าใจทั้งด้าน Web Server (Apache/Nginx) และระบบฐานข้อมูล (PostgreSQL) การใช้ PostgreSQL ในการจัดเก็บแผนที่การย้าย URL ไม่เพียงแต่ช่วยให้การจัดการข้อมูลเป็นระเบียบ แต่ยังช่วยให้ทีมงานสามารถตรวจสอบสถานะโค้ด (301, 302) และสถานะการใช้งาน (Active/Inactive) ของลิงก์ได้อย่างแม่นยำ ทำให้มั่นใจได้ว่าการเปลี่ยนแปลงโครงสร้างเว็บไซต์จะไม่ส่งผลกระทบต่อคะแนน SEO ที่สะสมมาอย่างยาวนาน