ผมซื้อโดเมนที่จดครั้งแรกในปี 2000 บนกระดาษ ประวัติที่ยาวนานดูเหมือนเป็นข้อได้เปรียบมากกว่าปัญหา แต่พอเปิดเว็บไซต์ใหม่ server log ก็เริ่มเต็มไปด้วย request ไปยังหน้าที่ผมไม่เคยสร้างเลย
URL ที่ไม่มีอยู่ในโปรเจกต์ใหม่ได้รับ request มากกว่า 1,000 ครั้งต่อวัน ใน analytics มันดูเหมือน direct traffic พุ่งแรง แต่แทบไม่มี engagement เลย ขณะเดียวกัน crawler ของ Yandex ก็ย้อนกลับไปหา path เก่า ได้ 404 Not Found และ Yandex Webmaster สะสม error มากกว่า 900 รายการในคืนเดียว
คำอธิบายแรกของผมง่ายมาก: bot เก่ากำลังยิง dead URL, Yandex เห็น activity นี้ แล้วจึง crawl ต่อ จากมุมที่ผมเห็น ลำดับเหตุการณ์ดูเป็นแบบนั้นจริง แต่ data ของผมไม่เพียงพอที่จะพิสูจน์ causal relationship นี้
สิ่งที่ผมยืนยันได้จริง
มี observation แยกกันสามอย่าง อย่างแรก server ได้รับ request จำนวนมากไปยัง URL จากชีวิตก่อนหน้าของโดเมน อย่างที่สอง traffic นั้นแทบไม่สร้าง engagement จากผู้ใช้จริง อย่างที่สาม crawler ของ Yandex ก็ request path เก่า และ dashboard ของ Webmaster แสดง error มากกว่า 900 รายการในคืนเดียว
ในเชิง operation นี่เป็นปัญหาจริง: log มี noise, มี request ที่ไม่จำเป็น และมี report ที่ต้องจัดการ แต่ facts เหล่านี้ ไม่ได้พิสูจน์ ว่า bot ภายนอกทำให้ Yandex crawl URL เหล่านั้น หรือ error ทำให้ ranking หรือ organic traffic แย่ลงโดยตรง Crawling ไม่เท่ากับ indexing, indexing ไม่เท่ากับ ranking และ error report ไม่ใช่หลักฐานของ penalty
ส่วนที่ผมเคยอธิบาย 404 กับ 410 แบบง่ายเกินไป
เมื่อก่อนผมคิดประมาณว่า 404 คือ “อาจหายไปแค่ตอนนี้” ส่วน 410 คือ “หายไปถาวร” มันช่วยให้เข้าใจคร่าว ๆ ได้ แต่ไม่แม่นในเชิง technical
404 Not Found หมายถึง server ไม่สามารถให้ current representation ของ resource ที่ร้องขอได้ ตัว status เองไม่ได้บอกว่าสถานการณ์นี้ temporary หรือ permanent ส่วน 410 Gone ชัดเจนกว่า: เหมาะเมื่อ server รู้ว่า resource ไม่พร้อมใช้งานอีกแล้วและสถานะนี้คาดว่าจะถาวร
ความแม่นยำนี้สำคัญกับ SEO ด้วย Search engine สามารถเอา URL ที่ตอบ 404 หรือ 410 ออกจากผลการค้นหาได้ ดังนั้นตอนนี้ผมไม่เรียก 410 ว่าเป็น “SEO status ที่แรงกว่า” แบบวิเศษ และไม่ถือว่า 404 ผิดสำหรับทุกหน้าที่ถูกลบ
ทำไม targeted 410 ยังเหมาะกับเคสของผม
path เก่าเหล่านี้ไม่ใช่ปัญหาชั่วคราว มันเป็นของ content เดิมบนโดเมนและไม่มีที่อยู่ในโปรเจกต์ใหม่ ผมรู้ว่า URL เหล่านี้หายไปถาวร ดังนั้น 410 Gone จึงอธิบายสถานะจริงได้ตรงที่สุด
ผมตั้ง 410 เฉพาะ known legacy path แทนที่จะทำให้ทุก unknown URL เป็น 410 หลังจากเปลี่ยนแบบนี้ noise ใน crawl และ reporting รอบ path เก่าลดลง และสถานะใน webmaster tools ก็สะอาดขึ้นมาก
แต่ผมยังระวังเรื่อง causality ผมพูดได้ว่าการดีขึ้นเกิดหลังจากตั้ง targeted 410 และ 410 ตรงกับสถานะของ URL เหล่านั้นจริง ผมพิสูจน์ไม่ได้ว่า 410 เพียงอย่างเดียวทำให้ bot ทุกตัวหยุด Third-party bot สามารถไม่สนความหมายของ HTTP status และยิง path เดิมต่อไปเรื่อย ๆ ได้
กฎการตัดสินใจที่ผมใช้ตอนนี้
คำถามที่มีประโยชน์ไม่ใช่ “410 ดีกว่า 404 ไหม?” แต่คือ “จริง ๆ แล้วเกิดอะไรขึ้นกับ URL นี้?”
- มี replacement ที่ชัดเจน: ใช้ permanent redirect เช่น
301ไปยัง URL ใหม่ที่เทียบเท่าจริง - resource เก่าถูกลบถาวรและไม่มี replacement:
410 Goneเป็นตัวเลือกที่แม่น - URL แค่ไม่รู้จัก พิมพ์ผิด หรือไม่เคยมีอยู่:
404 Not Foundปกติเหมาะสม
สิ่งที่ผมจะไม่ทำคือ redirect dead URL ทุกอันไปหน้าแรกเพียงเพื่อให้ error หาย เพราะมันซ่อนสถานะจริงของ resource และอาจทำให้ประสบการณ์แย่ลงทั้งสำหรับ user และ crawler
วันนี้ผมจะ audit โดเมนเก่าก่อน launch อย่างไร
ถ้าผมใช้โดเมนที่มีประวัติอีกครั้ง ผมจะถือว่า URL history เป็นส่วนหนึ่งของ migration แม้ไม่ได้ย้ายเว็บไซต์เก่ามาด้วยก็ตาม
- ตรวจ old footprint. หา historical URL และ legacy section ที่ชัดเจนก่อน launch
- ดู access log ตั้งแต่วันแรก. request ซ้ำ ๆ ไปยัง path ที่คุณไม่เคยสร้าง แปลว่าโดเมนยังถูกระบบภายนอกจดจำอยู่
- แยก human, search crawler และ random bot. direct traffic spike กับ crawler error เป็นคนละ signal อย่าเอามารวมเป็น causal story เดียวโดยอัตโนมัติ
- จัดประเภท recurring dead URL. สำหรับ pattern สำคัญแต่ละแบบ ให้ตัดสินใจชัดเจนว่าเป็น 301, 404 หรือ 410
- monitor ผลแยกกัน. request frequency, crawler report และ indexing เป็นคนละ dimension ไม่ควรรวมทั้งหมดเป็น metric คลุมเครือชื่อ “SEO health”
งานนี้เล็กมากเมื่อเทียบกับการมาเจอปัญหาหลังจาก log และ webmaster tools เต็มไปด้วย noise แล้ว
สิ่งที่ 410 แก้ไม่ได้
410 เป็น HTTP statement เกี่ยวกับสถานะของ resource มันไม่ใช่ firewall, rate limiter หรือ bot blocker ถ้า scraper ยังส่ง request ต่อหลังได้รับ 410 server ก็ยังต้องรับและตอบ request เหล่านั้น ถ้าปัญหาจริงคือ request volume ที่ abusive นั่นเป็น infrastructure problem อีกเรื่องหนึ่ง
410 ก็ไม่ใช่ SEO boost เช่นกัน Correct status ช่วย crawler เข้าใจว่าเกิดอะไรขึ้นกับ URL แต่ไม่ได้ทำให้เว็บไซต์ใหม่ rank ดีขึ้นด้วยตัวมันเอง
บทเรียนที่ผมเก็บไว้
สิ่งที่น่าประหลาดไม่ใช่การที่โดเมนเก่ามี URL เก่า แต่คือ invisible history กลับมาให้เห็นเร็วแค่ไหนหลัง launch: มากกว่า 1,000 request ต่อวันไปยังหน้าที่ผมไม่มี, engagement แทบเป็นศูนย์ และมากกว่า 900 error ใน Yandex Webmaster ภายในคืนเดียว
โดเมนเก่าไม่ใช่ empty namespace ลิงก์เก่า, crawler, script และ bot อาจจำ path ได้หลายปีหลัง content เดิมหายไป กฎของผมตอนนี้ง่ายมาก: audit history, คืน HTTP status ที่ตรงกับความจริง และแยก operational bot traffic ออกจากข้อสรุปเกี่ยวกับ search engine
History อาจเป็น asset แต่ก็เป็น state ที่คุณได้รับมาด้วย