เว็บขายของที่มีตัวกรองสินค้าดูเหมือนมีไม่กี่ร้อยหน้า แต่พอเปิดรายงานใน Search Console กลับพบว่ามีหน้าอยู่ในระบบเป็นหมื่น
สาเหตุเกือบทั้งหมดคือ URL Parameters
URL Parameters คืออะไร
URL Parameters คือส่วนที่ต่อท้าย URL หลังเครื่องหมายคำถาม ใช้ส่งค่าให้ระบบเพื่อเปลี่ยนสิ่งที่แสดง
ตัวอย่าง example.com/shoes?color=black&size=42 ส่วนที่อยู่หลังเครื่องหมายคำถามคือพารามิเตอร์สองตัว คือสีและขนาด
ประเด็นสำคัญคือ ในทางเทคนิค ทุกชุดพารามิเตอร์ที่ต่างกันคือ URL คนละเส้น แม้เนื้อหาจะเกือบเหมือนกันก็ตาม
พารามิเตอร์มีกี่แบบ
การแยกประเภทสำคัญ เพราะแต่ละแบบต้องจัดการต่างกัน
แบบที่เปลี่ยนเนื้อหาจริง
เช่น พารามิเตอร์ที่กำหนดหมวดสินค้า หรือกำหนดหน้าที่เท่าไหร่ในรายการยาว
กลุ่มนี้ควรให้เก็บเข้าดัชนีได้ เพราะเนื้อหาต่างกันจริงและมีคนค้นหา
แบบที่กรองหรือเรียงลำดับ
เช่น กรองตามสี ขนาด ราคา หรือเรียงจากถูกไปแพง
เนื้อหาที่ได้มาจากชุดเดียวกัน แค่แสดงต่างมุม กลุ่มนี้คือต้นเหตุหลักของหน้าซ้ำ
แบบที่ใช้ติดตามผล
เช่น UTM หรือรหัสแคมเปญ ไม่เปลี่ยนเนื้อหาเลย แต่สร้าง URL ใหม่ทุกครั้ง
แบบที่ใช้ในระบบ
เช่น รหัสเซสชัน หรือค่าจากระบบภายใน ไม่ควรถูกเก็บเข้าดัชนีเลย
ทำไมเป็นปัญหา
หน้าซ้ำจำนวนมาก สินค้า 100 รายการกับตัวกรอง 3 แบบที่มีตัวเลือกละ 5 ค่า สร้างชุดผสมได้เป็นพัน ซึ่งทั้งหมดมีเนื้อหาซ้อนกัน
กินงบการเก็บข้อมูล Googlebot ใช้เวลาไปกับหน้ากรองที่ไม่มีใครค้นหา แทนที่จะเก็บสินค้าใหม่หรือบทความใหม่ อ่านต่อที่ Crawl Budget
สัญญาณกระจาย ถ้ามีคนแชร์ลิงก์ที่มีพารามิเตอร์ติดมา น้ำหนักจะไปตกที่ URL นั้นแทนที่จะรวมที่หน้าหลัก
Google เลือกหน้าผิด บางครั้งระบบเลือกแสดงหน้าที่มีพารามิเตอร์ยาว ๆ แทนหน้าสะอาด ทำให้ผลค้นหาดูไม่น่าเชื่อถือ
วิธีจัดการแต่ละประเภท
พารามิเตอร์กรองและเรียงลำดับ — ใช้ Canonical
ให้ทุกหน้าที่เกิดจากการกรองชี้ Canonical กลับไปที่หน้าหมวดหลักที่ไม่มีพารามิเตอร์
วิธีนี้ยังให้ผู้ใช้ใช้ตัวกรองได้ตามปกติ แต่บอก Google ว่าหน้าหลักคืออันไหน
ข้อยกเว้น ถ้าตัวกรองบางตัวมีคนค้นหาจริง เช่น กรองแบรนด์ที่คนพิมพ์ค้นหาชื่อแบรนด์บวกประเภทสินค้า กรณีนั้นควรทำเป็นหน้าแยกที่มี URL สะอาดและให้เก็บเข้าดัชนีได้
อ่านต่อที่ Canonical Tags
พารามิเตอร์ติดตามผล — ใช้ Canonical เช่นกัน
หน้าที่เปิดจากลิงก์ที่มี UTM ควรมี Canonical ชี้กลับไปที่ URL สะอาดเสมอ
ระบบส่วนใหญ่ทำให้อัตโนมัติอยู่แล้ว แต่ควรตรวจสอบ เพราะบางธีมตั้งค่าผิดจนชี้ Canonical ไปที่ URL ที่มีพารามิเตอร์
พารามิเตอร์ระบบและเซสชัน — ไม่ควรมีตั้งแต่แรก
ถ้าระบบยังสร้างรหัสเซสชันใน URL ควรแก้ที่ระบบ เพราะเป็นรูปแบบที่ล้าสมัยและสร้างหน้าไม่จำกัด
กรณีที่มีจำนวนมหาศาล — พิจารณาบล็อกใน robots.txt
สำหรับเว็บใหญ่ที่หน้ากรองมีเป็นหมื่นและกินงบการเก็บข้อมูลอย่างหนัก อาจบล็อกรูปแบบพารามิเตอร์บางตัวไว้
ข้อควรระวัง ถ้าบล็อกใน robots.txt Googlebot จะเข้าไม่ถึงหน้านั้นเลย ทำให้ไม่เห็น Canonical ที่อยู่ข้างใน ดังนั้นควรใช้วิธีนี้เฉพาะกับพารามิเตอร์ที่แน่ใจว่าไม่ต้องการให้เก็บเลยจริง ๆ
อ่านต่อที่ Robots.txt
เครื่องมือจัดการพารามิเตอร์ใน Search Console
เครื่องมือนี้เคยมีให้ตั้งค่าว่าพารามิเตอร์แต่ละตัวทำหน้าที่อะไร แต่ Google เลิกให้บริการไปแล้ว โดยให้เหตุผลว่าระบบเข้าใจพารามิเตอร์ได้ดีพอโดยไม่ต้องบอก
ผลคือปัจจุบันต้องพึ่ง Canonical, robots.txt และการออกแบบ URL ที่ดีตั้งแต่ต้นแทน
ป้องกันตั้งแต่ออกแบบเว็บ
ใช้เส้นทางแทนพารามิเตอร์สำหรับสิ่งที่คนค้นหา /รองเท้า/สีดำ/ ดีกว่า /รองเท้า?color=black ถ้าคนค้นหาคำว่ารองเท้าสีดำจริง
เรียงลำดับพารามิเตอร์ให้คงที่ เพราะ ?a=1&b=2 กับ ?b=2&a=1 เป็นคนละ URL ทั้งที่ให้ผลเหมือนกัน ระบบควรจัดเรียงให้เป็นลำดับเดียวเสมอ
อย่าใส่พารามิเตอร์ที่ไม่จำเป็นในลิงก์ภายใน เมนูและลิงก์ในเนื้อหาควรชี้ไปที่ URL สะอาดเสมอ
ทำ Sitemap ให้มีเฉพาะ URL สะอาด เพื่อบอก Google ว่าอันไหนคือหน้าที่เราต้องการให้เก็บ
ตรวจว่าเว็บของคุณมีปัญหาหรือไม่
เทียบจำนวนหน้าในดัชนีกับจำนวนหน้าจริง ถ้าต่างกันหลายเท่า มักเป็นเพราะพารามิเตอร์
ดูรายงานการจัดทำดัชนีใน Search Console มองหาหมวดที่เกี่ยวกับหน้าซ้ำและหน้าที่ถูกค้นพบแต่ยังไม่เก็บ ถ้าตัวเลขสูงผิดปกติ แปลว่างบการเก็บข้อมูลถูกใช้ไปกับหน้าที่ไม่ควรเก็บ
ค้นหาเว็บตัวเองใน Google โดยจำกัดเฉพาะโดเมน แล้วดูว่ามี URL ที่มีเครื่องหมายคำถามโผล่มาเยอะไหม
สรุป
พารามิเตอร์ไม่ใช่สิ่งที่ผิด และจำเป็นสำหรับการทำงานของเว็บที่มีตัวกรอง ปัญหาอยู่ที่การปล่อยให้ทุกชุดผสมกลายเป็นหน้าที่ Google ต้องเก็บ
ทางแก้ที่ใช้ได้กับเว็บส่วนใหญ่คือ ตั้ง Canonical ให้ทุกหน้ากรองชี้กลับหน้าหลัก แล้วยกเว้นเฉพาะหน้ากรองที่มีคนค้นหาจริงให้เป็นหน้าแยกที่มี URL สะอาด
อ่านต่อได้ที่ Duplicate Content และ โครงสร้าง URL
