ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

ใช้ Canonical Tag แก้ปัญหาเนื้อหาซ้ำ
Home ใช้ Canonical Tag แก้ปัญหาเนื้อหาซ้ำ

ใช้ Canonical Tag แก้ปัญหาเนื้อหาซ้ำ

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

ผลคือคะแนนความน่าเชื่อถือถูกกระจายไปหลาย URL แทนที่จะรวมอยู่ที่เดียว และ Google อาจเลือกแสดง URL ที่คุณไม่ต้องการ Canonical Tag คือวิธีบอกว่าอันไหนคือตัวจริง

สิ่งที่ต้องเตรียม

  • สิทธิ์แก้ไขส่วน head ของเว็บ หรือปลั๊กอิน SEO
  • บัญชี Google Search Console ที่ยืนยันความเป็นเจ้าของแล้ว

ขั้นตอนที่ 1: หาว่ามีเนื้อหาซ้ำตรงไหน

ใน Search Console ไปที่ Pages แล้วดูหัวข้อ

  • Duplicate without user-selected canonical Google พบเนื้อหาซ้ำแต่คุณไม่ได้บอกว่าอันไหนตัวจริง
  • Duplicate, Google chose different canonical than user คุณตั้งไว้แล้วแต่ Google ไม่เห็นด้วย ซึ่งมักแปลว่าตั้งผิดหรือหน้าที่ชี้ไปไม่เหมือนกันจริง
  • Alternate page with proper canonical tag สถานะนี้ถูกต้องแล้ว ไม่ต้องแก้

ตรวจด้วยคำสั่งว่าหน้าเดียวกันเข้าได้จากกี่ทาง

for u in "https://example.com/product" "https://www.example.com/product" \
         "http://example.com/product" "https://example.com/product/" \
         "https://example.com/product?utm_source=fb"; do
  code=$(curl -s -o /dev/null -w '%{http_code}' "$u")
  canon=$(curl -sL "$u" | grep -oP '(?<=rel="canonical" href=")[^"]+' | head -1)
  printf '%-50s %s  canonical: %s\n' "$u" "$code" "$canon"
done

ทุกบรรทัดควรแสดง canonical เป็น URL เดียวกัน

ขั้นตอนที่ 2: เขียน Canonical ให้ถูกรูปแบบ

<link rel="canonical" href="https://example.com/product/" />

กฎที่ต้องทำตาม

  • ใช้ URL แบบเต็ม เสมอ รวมโพรโทคอลและโดเมน ไม่ใช้พาธสัมพัทธ์
  • ใส่ไว้ใน <head> เท่านั้น หากอยู่ใน <body> Google จะไม่สนใจ
  • มีได้แท็กเดียวต่อหน้า หากมีหลายอัน Google จะไม่สนใจทั้งหมด
  • ต้องชี้ไปยังหน้าที่ตอบ 200 ไม่ใช่หน้าที่ redirect หรือ 404
  • เรื่องเครื่องหมายทับท้าย URL ต้องสอดคล้องกันทั้งเว็บ

ทุกหน้าควรมี Canonical แม้เป็นหน้าที่ไม่มีเวอร์ชันซ้ำ โดยชี้ไปที่ตัวเอง วิธีนี้ป้องกันปัญหาจากพารามิเตอร์ที่อาจถูกเพิ่มเข้ามาภายหลัง

ขั้นตอนที่ 3: กรณีที่พบบ่อยและวิธีจัดการ

พารามิเตอร์ติดตาม

/product?utm_source=facebook ควรมี canonical ชี้ไป /product ซึ่งปลั๊กอิน SEO ส่วนใหญ่ทำให้อัตโนมัติ

หน้าแบ่งหน้า

หน้า 2 ของรายการสินค้าควร canonical ชี้ไปที่ตัวเอง ไม่ใช่หน้า 1 การชี้กลับไปหน้า 1 ทำให้สินค้าในหน้าหลัง ๆ ไม่ถูกเก็บดัชนี

<!-- ที่ /products/page/2/ -->
<link rel="canonical" href="https://example.com/products/page/2/" />

สินค้าที่อยู่หลายหมวด

เลือกหมวดหลักหนึ่งหมวดเป็นตัวจริง แล้วให้ URL อื่นชี้มาที่นั่น ทางที่ดีกว่าคือออกแบบให้สินค้ามี URL เดียวตั้งแต่ต้น

สินค้าที่ต่างกันแค่สี

หากเนื้อหาเกือบเหมือนกันทั้งหมด ให้ canonical ชี้ไปตัวหลัก แต่หากแต่ละสีมีรายละเอียดและรูปต่างกันชัดเจน ควรให้แต่ละหน้าเป็นอิสระ

เวอร์ชันพิมพ์หรือ AMP

ชี้ canonical กลับไปหน้าปกติเสมอ

ขั้นตอนที่ 4: ตั้งใน WordPress

ปลั๊กอิน SEO ทุกตัวจัดการให้อัตโนมัติ ตรวจว่าไม่ได้มีสองปลั๊กอินใส่พร้อมกัน

curl -sL https://example.com/product/ | grep -c 'rel="canonical"'

ผลควรเป็น 1 หากได้ 2 ให้ปิดปลั๊กอินตัวใดตัวหนึ่งหรือปิดฟีเจอร์ canonical ของธีม

เขียนเองเมื่อจำเป็น

// ตั้ง canonical เฉพาะหน้าที่ต้องการ
add_filter('wpseo_canonical', function ($canonical) {
    if (is_singular('product') && isset($_GET['variant'])) {
        return get_permalink();
    }
    return $canonical;
});

ขั้นตอนที่ 5: ตั้งผ่าน HTTP Header สำหรับไฟล์ที่ไม่ใช่ HTML

ไฟล์ PDF และรูปภาพใส่แท็กใน head ไม่ได้ ใช้ header แทน

location ~* \.pdf$ {
    add_header Link '<https://example.com/brochure/>; rel="canonical"' always;
}
curl -sI https://example.com/files/brochure.pdf | grep -i link

ขั้นตอนที่ 6: เลือกระหว่าง Canonical กับ 301

สองอย่างนี้แก้ปัญหาต่างกัน

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

สำหรับ www และโพรโทคอล ใช้ 301 เสมอ ไม่ใช่ canonical

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

ขั้นตอนที่ 7: ตรวจสอบและติดตามผล

ใช้เครื่องมือ URL Inspection ใน Search Console ใส่ URL ที่ต้องการตรวจ ดูหัวข้อ Page indexing จะเห็นสองค่า

  • User-declared canonical คือสิ่งที่คุณตั้งไว้
  • Google-selected canonical คือสิ่งที่ Google เลือกจริง

หากสองค่านี้ไม่ตรงกัน แปลว่า Google ไม่เชื่อสิ่งที่คุณบอก สาเหตุที่พบบ่อยคือหน้าที่ชี้ไปมีเนื้อหาต่างจากหน้านี้มาก มีลิงก์ภายในชี้ไปยัง URL อื่นมากกว่า หรือ Sitemap ระบุ URL ที่ไม่ตรงกับ canonical

ตรวจความสอดคล้องทั้งสามจุดเสมอ

  • Canonical ในหน้า
  • URL ใน Sitemap
  • ลิงก์ภายในที่ชี้มาที่หน้านี้
# ตรวจว่า URL ใน sitemap ตรงกับ canonical
curl -s https://example.com/sitemap.xml | grep -oP '(?<=<loc>)[^<]+' | head -20

ปัญหาที่พบบ่อย

Google เลือก canonical ไม่ตรงกับที่ตั้ง

ตรวจว่าลิงก์ภายในทั้งหมดชี้ไปยัง URL เดียวกับ canonical และ Sitemap ระบุ URL เดียวกัน สัญญาณเหล่านี้มีน้ำหนักมากกว่าแท็กเพียงอย่างเดียว

Canonical ชี้ไปหน้าที่ redirect

ทำให้ Google สับสน ตรวจว่า URL ที่ชี้ไปตอบ 200 โดยตรง

curl -sI https://example.com/product/ | head -1

หน้าหายจากผลค้นหาหลังตั้ง canonical

อาจชี้ผิดไปยังหน้าอื่น ทำให้ Google รวมหน้านั้นเข้ากับหน้าที่ชี้ไป ตรวจทุกหน้าที่ได้รับผลกระทบด้วย URL Inspection

มี canonical หลายอันในหน้าเดียว

เกิดจากธีมและปลั๊กอินใส่พร้อมกัน ตรวจด้วยคำสั่งในขั้นตอนที่ 4 แล้วปิดตัวใดตัวหนึ่ง

ต้องการให้ทีมงานช่วยตรวจสอบโครงสร้าง SEO ของเว็บ ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security