Technical SEO สำหรับเว็บไซต์แบรนด์เอง: แนวทางที่ดีที่สุดสำหรับโครงสร้าง URL, breadcrumb, การแบ่งหน้า และ canonical
หนึ่ง โครงสร้าง URL: กำหนดให้ตายก่อนเปิดใช้งาน 30 วันอย่าแตะ
URL เป็นสัญญาณแรกที่ Google ใช้ตัดสินลำดับชั้นและหัวข้อของหน้า กฎทองของ URL เว็บไซต์แบรนด์เองคือ: ตัวพิมพ์เล็ก ขีดกลาง ไม่เกิน 3 ชั้น มีคีย์เวิร์ด ไม่มีพารามิเตอร์แบบไดนามิก หลังเปิดใช้งานถ้าเปลี่ยน URL ต้องตั้ง 301 ไม่งั้นลิงก์ภายนอกและอันดับจะร่วงพร้อมกัน
| กฎ | ตัวอย่างที่ถูกต้อง | ตัวอย่างที่ผิด |
|---|---|---|
| ตัวพิมพ์เล็กคั่นขีดกลาง | /hydraulic-hose/ | /Hydraulic_Hose/ |
| ลำดับชั้น≤3 | /products/hydraulic-hose/xsr300/ | /products/catalog/2024/hydraulic/hose/xsr300/ |
| ไม่มี ID | /products/xsr300/ | /product.php?id=88231 |
| ไม่มีวันที่ | /blog/how-to-choose-hose/ | /blog/2024/09/11/how-to-choose/ |
| คำ≤4 | /commercial-pressure-washer/ | /best-commercial-pressure-washer-for-farms-in-2024/ |
URL ที่มีพารามิเตอร์แบบไดนามิกเป็นหลุมดำการจัดทำดัชนีที่พบบ่อยที่สุดของเว็บไซต์แบรนด์เอง ตะกร้าสินค้า ตัวกรอง การจัดเรียง session ID ล้วนสร้าง URL ที่มี ? พารามิเตอร์ ถ้าไม่จัดการ Google จะดึงหน้าเดียวกันในหลายเวอร์ชันพารามิเตอร์เป็นหน้าอิสระ วิธีจัดการดูที่ประสบการณ์การค้นหาหน้าสินค้า หัวใจคือใช้ robots บล็อกพารามิเตอร์ที่ไม่มีคุณค่า แล้วใช้ canonical ชี้พารามิเตอร์ที่มีคุณค่าไปยังเวอร์ชันหลัก
ตัวอย่างสถานการณ์: เว็บลูกค้าใช้ WooCommerce URL สินค้าคือ /product/xsr300/ แต่หลังเพิ่มปลั๊กอินสินค้าที่เกี่ยวข้อง 3 ตัว ระบบสร้าง URL แบบ /product/xsr300/?variation=red ขึ้นมาอัตโนมัติ ใน GSC จัดทำดัชนีซ้ำกว่า 1200 รายการ วิธีจัดการคือ Disallow ?variation= ใน robots และเขียน canonical ตายตัวเป็น /product/xsr300/ ใน head ของหน้าสินค้า
สอง breadcrumb: การนำทางที่มองเห็น + structured data ที่ซ่อนอยู่
breadcrumb แก้ปัญหาสองอย่าง: ผู้เข้าชมรู้ว่าตัวเองอยู่ตรงไหน และ Google ใช้ breadcrumb แทน URL ยาวๆ ใน SERP ต้องทำทั้งสองอย่างพร้อมกัน คือ breadcrumb นำทางที่มองเห็นได้บนหน้า บวก BreadcrumbList JSON-LD ใน head
| วิธีทำ breadcrumb | แนะนำหรือไม่ | คำอธิบาย |
|---|---|---|
| นำทางที่มองเห็น + BreadcrumbList markup | แนะนำ | ทั้งผู้ใช้และ Google อ่านได้ มี breadcrumb ใน SERP |
| มีเฉพาะเมนูที่มองเห็น ไม่มี markup | ใช้ได้ | ผู้ใช้ยังใช้งานได้ แต่โอกาสได้ breadcrumb ใน SERP ต่ำ |
| มีเฉพาะ markup ที่ซ่อนอยู่ ไม่มีเมนูที่มองเห็น | ห้ามใช้ | ถือเป็น hidden text ผิดนโยบาย spam ของ Google |
| breadcrumb เกิน 5 ชั้น | ห้ามใช้ | ชั้นลึกเกินไป ควรปรับให้แบนลง |
| ชั้นสุดท้ายก็ทำเป็นลิงก์ | ไม่แนะนำ | ลิงก์หาตัวเองไม่มีความหมาย ชั้นสุดท้ายควรเป็นข้อความธรรมดา |
คุมจำนวนชั้นให้ไม่เกิน 4 ชั้น: หน้าแรก > หมวดหลัก > หมวดรอง > สินค้า ทุกชั้นใน breadcrumb ให้ใช้ absolute URL ไม่ใช้ relative path วิธีเขียน BreadcrumbList ดูตัวอย่างได้ที่structured data Schema ส่วน P0 ในนั้น ให้ตรวจสอบด้วย Rich Results Test ในวันที่เปิดใช้งาน
สาม การแบ่งหน้า: แต่ละหน้าอ้าง canonical ของตัวเอง เลิกใช้ rel=next/prev
การแบ่งหน้าเป็นเรื่องที่บทเรียนเก่าๆ ทำให้เข้าใจผิดมากที่สุดในสายเทคนิคอล SEO แท็ก rel=next/rel=prev ที่ Google ประกาศตั้งแต่มีนาคม 2019 ว่าไม่ใช้เป็นสัญญาณอีกต่อไป แต่บทเรียนออนไลน์จำนวนมากยังสอนให้เขียน ซึ่งเขียนไปก็ไม่มีผล
| วิธีแบ่งหน้า | ผลการจัดทำดัชนี | แนะนำหรือไม่ |
|---|---|---|
| แต่ละหน้าอ้าง canonical ของตัวเอง (page=2 canonical ไปที่ page=2) | หน้า 1 ถึง 10 ถูกจัดทำดัชนีแยกกันทั้งหมด | แนะนำ |
| ทุกหน้าอ้าง canonical ไปที่หน้า 1 | เฉพาะหน้า 1 ที่ถูกจัดทำดัชนี หน้า 2 ถึง 10 หายไป | ข้อผิดพลาด |
| ใช้ rel=next/prev | Google ไม่สนใจแล้ว ไม่มีผล | ล้าสมัย |
| infinite scroll ไม่มีลิงก์แบ่งหน้า | เนื้อหาตั้งแต่หน้า 2 เป็นต้นไป crawl ไม่ถึง | ข้อผิดพลาด |
| แบ่งหน้าเกิน 10 หน้าแล้วยังกดเลื่อนต่อ | เสี่ยงหน้า thin content สูง | เปลี่ยนเป็นตัวกรอง/เรียงตามตัวอักษร |
จุดที่ขัดกับสัญชาตญาณ: หลายคนคิดว่าการตั้ง canonical ของหน้าต่างๆ ไปที่หน้าแรกจะรวมน้ำหนักได้ แต่ผลคือหน้า 2 ถึง 10 ไม่ถูกจัดทำดัชนีเลย จำนวนหน้าที่ถูกจัดทำดัชนีของหน้าลิสต์ทั้งหมดเหลือแค่ 1/10 วิธีที่ถูกคือให้แต่ละหน้าอ้าง canonical ไปที่ตัวเอง ให้ Google มองแต่ละหน้าเป็นเนื้อหาแยกกัน ถ้าหมวดไหนมีสินค้าเกิน 10 หน้า ให้ใช้ตัวกรองหรือดัชนีตัวอักษรแทนการกดเลื่อนหน้า อย่าใช้การแบ่งหน้าแบบไม่จำกัด
สี่ canonical: ใช้ absolute URL อ้างตัวเอง และใส่ hreflang
แท็ก canonical บอก Google ว่า หน้านี้กับหน้านั้นเป็นเนื้อหาเดียวกัน ให้ยึดหน้านี้เป็นหลัก เป็นเครื่องมือแรกในการจัดการเนื้อหาซ้ำ แต่ใช้ผิดแย่กว่าไม่ใช้
| วิธีเขียน canonical | ผลลัพธ์ | ตัดสินอย่างไร |
|---|---|---|
| <link rel=”canonical” href=”https://เว็บไซต์/a/”> absolute URL | ชี้ไปที่เวอร์ชันหลักได้ถูกต้อง | วิธีมาตรฐาน |
| canonical เขียนเป็น relative URL /a/ | Google ส่วนใหญ่ตีความได้ แต่มีความเสี่ยง | ไม่แนะนำ |
| canonical ชี้ไปที่หน้าแรก | น้ำหนักของทั้งหน้าถูกรวมผิดที่ | ผิดร้ายแรง |
| canonical ชี้ไปที่หน้า 404 หรือหน้าที่ถูกลบแล้ว | หน้าหายไปจากดัชนี | ผิดร้ายแรง |
| หน้าหลายภาษาต้องใส่ canonical คู่กับ hreflang | แต่ละภาษาถูกจัดทำดัชนีแยกกัน | วิธีมาตรฐาน |
เว็บหลายภาษาต้องให้ canonical ทำงานคู่กับ Hreflang การรองรับหลายภาษา หน้าเวอร์ชันภาษาอังกฤษให้ canonical ชี้ไปที่ URL ภาษาอังกฤษของตัวเอง และ hreflang ระบุทุกเวอร์ชันภาษา อย่าให้หน้าเยอรมัน canonical ไปที่หน้าอังกฤษ เพราะจะทำให้หน้าเยอรมันหายไปจากผลการค้นหาในเยอรมนีทันที วิธีเลือกปลั๊กอินดูได้ที่เทคโนโลยีสแตกของ crater。
ตัวอย่าง: หลังลูกค้าปรับหน้าเว็บใหม่แล้วทำ 301 จาก URL เก่า /old-product/ ไปที่ /new-product/ แต่ลืมใส่ canonical แบบ self-referencing ใน /new-product/ ผลคือ GSC รายงานข้อผิดพลาด “ผู้ใช้ระบุ canonical แต่ระบบไม่เลือกให้” พอเพิ่มบรรทัด canonical เข้าไป ภายใน 5 วันข้อผิดพลาดก็หายไป ปัญหานี้พบบ่อยมากตอนย้ายเว็บไซต์ ดูรายละเอียดที่การปรับโครงสร้างเว็บและการเปลี่ยนโดเมน。
ห้า、ขั้นตอนตรวจสอบ 7 วันหลังเปิดใช้งาน
ชุดสี่อย่างไม่ได้จบแค่เขียนโค้ดเสร็จ ต้องตรวจสอบใน GSC ด้วย
| รายการตรวจสอบ | เครื่องมือ | กรอบเวลา | เกณฑ์ผ่าน |
|---|---|---|---|
| สุ่มตรวจโครงสร้าง URL | เครื่องมือตรวจสอบ URL | วันเปิดใช้งาน | สุ่ม 5 URL ไม่มีพารามิเตอร์ ระดับชั้นไม่เกิน 3 |
| มาร์กอัป breadcrumb | Rich Results Test | วันเปิดใช้งาน | ไม่มีข้อผิดพลาด |
| การจัดเก็บหน้าซอย | รายงานดัชนี GSC | วันที่ 7 | หน้า 2 ถึง 10 ถูกจัดเก็บครบ |
| อัตราการเลือก canonical | รายงานดัชนีหน้าเว็บ GSC | วันที่ 14 | ข้อผิดพลาด “ผู้ใช้ระบุแต่ระบบไม่เลือก” น้อยกว่า 5 รายการ |
| จำนวนหน้าบาง | GSC “สแกนแล้วแต่ยังไม่จัดเก็บ” | วันที่ 7 และ 14 | น้อยกว่า 200 รายการและลดลงต่อเนื่อง |
ประสิทธิภาพและเทคนิค SEO เป็นสองชั้น: URL, breadcrumb, หน้าซอย, canonical อยู่ในเรื่องความสามารถในการสแกน Core Web Vitals อยู่ในเรื่องประสบการณ์การใช้งาน ผ่านทั้งสองชั้นแล้วค่อยพูดถึงเนื้อหาและลิงก์ภายนอก ดูที่Google SEO บทความอื่นในหมวดนี้
หก、การทำงานร่วมกันของ robots, sitemap และ crawl budget
นอกจากชุดสี่อย่างแล้ว ยังมีสวิตช์อีกสองตัวที่มักถูกมองข้าม: robots.txt และ XML sitemap ทั้งสองตัวกำหนดว่า Google bot จะใช้ crawl budget ที่มีจำกัดไปกับ URL ไหน
| เครื่องมือ | หน้าที่ | การตั้งค่าทั่วไป |
|---|---|---|
| robots.txt Disallow | บล็อกไม่ให้ crawl URL ที่ไม่มีคุณค่า | บล็อกตะกร้าสินค้า พารามิเตอร์ตัวกรอง หลังบ้าน |
| robots.txt Allow | อนุญาตไดเรกทอรีสำคัญอย่างชัดเจน | Allow: /products/ /blog/ |
| XML sitemap | บอก Google ว่ามีหน้าไหนสำคัญบ้าง | ใส่เฉพาะหน้าที่จัดเก็บได้ ไม่รวม URL ที่เป็น noindex |
| Sitemap index | แยกเมื่อมีหน้าเยอะ | แยกเป็น products.xml, blog.xml, pages.xml |
ข้อผิดพลาดที่พบบ่อยคือใส่ URL ที่เป็น noindex ลงใน sitemap ด้วย ซึ่งจะทำให้ Google สับสน: คุณบอกว่าไม่ให้จัดเก็บ แต่ก็บอกว่าหน้านี้สำคัญ วิธีที่ถูกคือใส่เฉพาะ URL ที่จัดเก็บได้ลงใน sitemap ส่วนหน้าที่เป็น noindex ก็ไม่ต้องใส่ sitemap และไม่ต้องหวังให้มันถูกสแกน
ตัวอย่าง: เว็บลูกค้ามี 5000 หน้าสินค้า แต่ GSC แสดงว่า Google สแกนเพียง 800 URL ต่อสัปดาห์ โดย 600 URL ถูกตะกร้าสินค้าและพารามิเตอร์ตัวกรองกินไป วิธีจัดการคือใช้ robots.txt Disallow /cart/ และ URL ที่มี ?filter= เพื่อปลดปล่อย crawl budget ให้หน้าสินค้า สองสัปดาห์ต่อมาหน้าสินค้าถูกสแกนเพิ่มจาก 200 เป็น 650 ต่อสัปดาห์ อัตราการจัดเก็บเพิ่มจาก 30% เป็น 75%
crawl budget ไม่ใช่เรื่องที่เฉพาะเว็บใหญ่ต้องสนใจ เว็บ B2B ที่มีสินค้า 200 ชิ้นและเพิ่มบล็อกเดือนละ 10 บทความ หากมีหน้าบาง 5000 หน้าถูกสแกน Google ก็จะใช้ budget ผิดที่เช่นกัน แก่นแท้ของเทคนิค SEO คือการรวม budget ไปที่หน้าที่สำคัญจริงๆ
สุดท้ายขอพูดถึงความเข้าใจผิดที่พบบ่อย: หลายคนใช้เครื่องมือตรวจสอบ URL ตรวจครั้งเดียวแล้วคิดว่าจบแล้ว จริงๆ แล้วควรมองรายงาน “ดัชนีหน้าเว็บ” ใน GSC ทุกสัปดาห์ ถ้าตัวเลข “ตรวจพบแล้วแต่ยังไม่จัดทำดัชนี” เพิ่มขึ้นติดต่อกันสองสัปดาห์ แสดงว่าอาจมีหน้าเนื้อหาบางใหม่ถูกสร้างขึ้น หรือการตั้งค่า canonical มีปัญหาใหม่ เส้นเตือนของตัวเลขนี้คือไม่เกิน 200 รายการ ถ้าเกินต้องตรวจสอบ robots, sitemap และการแก้ไขเทมเพลตครั้งล่าสุด
เว็บไซต์หลายภาษาต้องให้ความสำคัญกับการทำงานร่วมกันของ hreflang และ canonical เพิ่มเติมด้วย canonical ของแต่ละหน้าภาษาต้องชี้ไปที่ตัวเอง ส่วน hreflang ต้องระบุทุกเวอร์ชันภาษา อย่าชี้ canonical ของหน้าภาษาอังกฤษไปที่หน้าภาษาเยอรมัน และอย่าให้ hreflang ของหน้าภาษาอังกฤษชี้ไปที่ URL ที่ไม่มีอยู่ การเขียนแท็ก hreflang ผิดเป็นสาเหตุอันดับหนึ่งของความผิดปกติในการจัดทำดัชนีเว็บไซต์หลายภาษา ดูรายละเอียดได้ที่Hreflang การรองรับหลายภาษา。
เทคนิคัล SEO มีหลักการจัดลำดับความสำคัญ: แก้ข้อผิดพลาดการรวบรวมก่อน แก้ข้อผิดพลาดการจัดทำดัชนีต่อ และแก้ปัญหาอันดับสุดท้าย เว็บไซต์ที่แม้แต่ robots ยังตั้งค่าไม่ถูกต้อง จะพูดถึงอันดับก็ไม่มีความหมาย ใช้รายงาน “ความครอบคลุม” ใน GSC เคลียร์ข้อผิดพลาดให้เหลือศูนย์ก่อน แล้วค่อยดูตำแหน่งคีย์เวิร์ดในรายงาน “ประสิทธิภาพ” ลำดับห้ามสลับกัน
สุดท้ายขอให้เช็กลิสต์สำหรับตรวจสอบตัวเอง: ก่อนเปิดใช้งานให้ใช้เครื่องมือตรวจสอบ URL ตรวจหน้าเทมเพลต 5 หน้า ยืนยันว่า HTTP 200, canonical ถูกต้อง, มาร์กอัป breadcrumb ไม่มีข้อผิดพลาด, การแบ่งหน้าอ้างอิงตัวเอง, robots ไม่ได้บล็อกผิดพลาด ผ่านทั้งห้าข้อนี้ ถือว่าส่งมอบเทคนิคัล SEO ในชั้นนี้ได้แล้ว ที่เหลือปล่อยให้เป็นเรื่องของเนื้อหาและลิงก์ภายนอก
FAQ คำถามที่พบบ่อย
ใน URL ควรใช้เครื่องหมายขีดกลางหรือขีดล่าง?
การแบ่งหน้าควรเขียน rel=next/prev ไหม?
หน้าที 2 ของการแบ่งหน้าขึ้นไปให้ canonical ชี้ไปหน้าที่ 1 ถูกต้องไหม?
canonical ควรใช้ URL แบบสัมพัทธ์หรือแบบสัมบูรณ์?
breadcrumb แสดงแค่บนหน้าเว็บ ไม่เขียน structured data ได้ไหม?
ถ้าเปิด URL ไปแล้วพบว่าสะกดคำผิด จะแก้ได้ไหม
ทิ้งท้าย
Technical SEO ทั้งสี่ข้อไม่มีข้อใดเป็นเวทมนตร์ มันแค่ทำให้ Google เข้าใจเว็บไซต์ของคุณได้อย่างถูกต้อง URL กำหนดโครงสร้าง breadcrumb บอกเส้นทาง pagination ช่วยให้ถูก index canonical ลบเนื้อหาซ้ำ ถ้าทำผิดข้อใดข้อหนึ่ง เนื้อหาจะเขียนดีแค่ไหนก็ไม่ติดอันดับ
ลงมือสามขั้นตอน: สัปดาห์นี้ใช้เครื่องมือตรวจสอบ URL สุ่มตรวจ 5 หน้าเทมเพลต ยืนยันว่าไม่มีพารามิเตอร์แบบ dynamic และระดับชั้นไม่เกิน 3 ชั้น; สัปดาห์หน้าแก้เทมเพลต pagination และ canonical ให้ถูกต้อง ลบ rel=next/prev ทั้งหมด; สัปดาห์ที่สามตรวจในรายงานดัชนีของ GSC ว่า “crawled แต่ยังไม่ถูก index” ต่ำกว่า 200 รายการหรือไม่
ประโยคเดียวที่จำได้: Technical SEO ไม่ใช่คะแนนพิเศษ แต่เป็นตั๋วเข้าประตู——ทำสี่ข้อให้ถูก เนื้อหาจึงจะมีสิทธิ์ถูกพูดถึง
