วิธีแก้ Alternate page with proper canonical tag บน Search Console

Son contentmastery.io
Updated: July 28, 2025
สารบัญ
กำลังโหลดสารบัญ...
สวัสดีครับชาว Web Marketing & SEO วันนี้ผมจะมาแชร์วิธีแก้ปัญหาที่หลายคนเจอใน Google Search Console นั่นคือ "Alternate page with proper canonical tag" ครับ

ผมจะสมมติเว็บในตัวอย่างคือเว็บ contentmastery.io ของผมเองละกัน เมื่อลองเช็คใน Google Search Console มีหน้าเว็บถึง 48 หน้าที่ไม่ถูก index เพราะปัญหานี้ มาดูกันว่าเกิดจากอะไรและเราจะแก้มันยังไง

โดยเข้าไปที่ Indexing > Pages ได้เลยครับ 


Alternate page with proper canonical tag


ปัญหา "Alternate page with proper canonical tag" 

ปัญหานี้เกิดเมื่อ Google พบว่ามีหน้าเว็บ 2 หน้าที่มีเนื้อหาเหมือนกันหรือคล้ายกันมาก แต่ URL ต่างกัน และแม้ว่าเราจะตั้ง canonical tag ไว้แล้ว แต่ Google ก็ยังมองว่าเป็นหน้าแยกกัน

ในกรณีของผม ปัญหาอยู่ที่

  • https://contentmastery.io/ (non-www)

  • https://www.contentmastery.io/ (www)

ทั้ง 2 URL สามารถเข้าถึงได้ ซึ่งนี่แหละครับคือต้นเหตุของปัญหา

เข้าถึงได้น่ะโอเครและถูกต้องแล้วครับ แต่พอเวลาเปิดอีกเวอร์ชั่น เช่น ผมเปิดที่เป็น www เวอร์ชัน มันควร redirect ไปที่ non-www เวอร์ชัน ที่ผมกำหนดเป็น canonical หลัก (ซึ่งตอนนี้มันไม่ใช่แบบนี้ มันแยกกันเลย)


Canonical Issue ปัญหาคลาสสิคที่หลายคนเจอบ่อย


ทำไม Google ถึงมองว่าเป็นปัญหา?

แม้ว่าผมจะใส่ canonical tag ชี้ไปที่ URL หลักแล้ว แต่ถ้าทั้ง 2 URL ยังเข้าถึงได้ Google จะมองว่า

  1. เป็นการสิ้นเปลืองรีซอร์สในการ crawl

  2. อาจทำให้ link juice กระจายไปทั้ง 2 versions (ซึ่งไม่ควรเด้อ)

  3. สร้างความสับสนว่า URL ไหนคือ URL หลักที่แท้จริง (ตามที่บอกไปด้านบนก่อนหน้า)

Google จึงเลือกที่จะไม่ index หน้าที่มองว่าเป็น "alternate page" แม้จะมี canonical tag ที่ถูกต้องก็ตาม 

Note: อันนี้ค่อนข้างเกี่ยวกับด้าน Technical มีอีกบทความแนะนำคือ Technical SEO เช็คลิสต์สำคัญปี 2025 ครับ


วิธีแก้ปัญหาแบบถาวร (Fix บน Web Server)

วิธีที่ดีที่สุดคือทำ 301 redirect จาก URL ที่ไม่ต้องการไปยัง URL หลัก ในกรณีนี้ผมเลือกใช้ non-www เป็นหลัก ดังนั้นต้อง redirect จาก www ไป non-www


สำหรับ Nginx (เว็บเซิร์ฟเวอร์นิยมสุดตอนนี้)

เราสามารถเพิ่ม (หรือให้ dev ของเราทำให้) โค้ดนี้ในไฟล์ nginx config ของเว็บ (ปกติอยู่ที่ /etc/nginx/sites-available/yourdomain ) ครับ

อันนี้สาย web dev นะครับ ส่วนเพื่อน ๆ ที่ใช้เว็บสำเร็จรูป เช่น WordPress ผมก็คิดว่าน่าจะมีส่วนที่เป็น UI ที่สามารถปรับได้หรือเปล่านะ? แต่ว่าคอนเซ็ปต์ก็คือตามนี้เลยครับ เบื้องลึกเบื้องหลัง
server {
    listen 80;
    listen 443 ssl http2;
    server_name www.contentmastery.io;
    
    # SSL certificates (ถ้าใช้ HTTPS)
    ssl_certificate /path/to/ssl/cert.pem;
    ssl_certificate_key /path/to/ssl/key.pem;
    
    # Redirect ทั้งหมดไป non-www
    return 301 https://contentmastery.io$request_uri;
}

server {
    listen 80;
    server_name contentmastery.io;
    
    # Redirect HTTP to HTTPS
    return 301 https://contentmastery.io$request_uri;
}


สำหรับ Apache (.htaccess)

ถ้าใช้ Apache ให้ไปเพิ่มในไฟล์ .htaccess

RewriteEngine On

# Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.contentmastery\.io [NC]
RewriteRule ^(.*)$ https://contentmastery.io/$1 [L,R=301]

# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://contentmastery.io/$1 [L,R=301]


เสร็จแล้วตรวจสอบ Canonical Tag ให้ถูกต้อง

นอกจาก Redirect แล้ว ต้อง inspect ดู canonical tag ในหน้าเว็บเราด้วยครับ 

<link rel="canonical" href="https://contentmastery.io/" />


สำคัญเลยนะครับ URL ใน canonical tag ต้องตรงกับ URL ที่เราเลือกเป็นหลัก 100% รวมถึง

  • Protocol (http vs https)
  • www หรือ non-www
  • Trailing slash (/) ท้าย URL


ขั้นตอนหลังจากแก้ไข

  1. Restart Nginx/Apache หลังจากแก้ไข config
sudo nginx -t  # ทดสอบ config
sudo systemctl restart nginx

  • ทดสอบ Redirect
    • ลองเข้า https://www.contentmastery.io/  
    • ต้อง redirect ไป https://contentmastery.io/ อัตโนมัติ
    • ตรวจสอบด้วย HTTP status checker ต้องได้ 301
  • Request Validation ใน Search Console
    • ไปที่ Page indexing report
    • คลิก "Alternate page with proper canonical tag"
    • เลือกหน้าที่ต้องการ
    • คลิก "Validate Fix"
  • รอผลการ Validation
    • Google จะใช้เวลา 3-14 วัน ในการตรวจสอบ
    • ถ้าผ่าน status จะเปลี่ยนเป็น "Passed"


  • สรุป

    ปัญหา "Alternate page with proper canonical tag" แก้ได้ไม่ยากครับ สิ่งสำคัญคือเราต้อง

    1. เลือกว่าจะใช้ www หรือ non-www เป็นหลัก
    2. ทำ 301 redirect จาก version ที่ไม่ใช้ไปยัง version หลัก
    3. ตรวจสอบ canonical tag ให้ถูกต้อง
    4. Request validation ใน Search Console

    จากประสบการณ์ของผม หลังจากทำ redirect แล้ว ปัญหานี้จะหายไปภายใน 2-3 สัปดาห์ครับ และหน้าเว็บที่เคยติดปัญหาก็จะถูก index ตามปกติ จากแยกไป 2 ร่าง ก็จะกลายมารวมพลังกันตามปกติ ทำให้หน้าเว็บไม่ถูกแบ่งพลังออกไป

    ถ้าใครเจอปัญหานี้แล้วลองทำตามแล้วยังไม่หาย หรือติดปัญหาตรงไหน คอมเมนต์มาถามได้นะครับ ยินดีช่วยเหลือ

    ปล. อย่าลืมเช็คใน Search Console เป็นระยะ ๆ นะครับ บางทีปัญหาแบบนี้อาจเกิดขึ้นโดยที่เราไม่รู้ตัว โดยเฉพาะเวลาที่มีการเปลี่ยนแปลงโครงสร้างเว็บหรือย้าย hosting
    Son contentmastery.io

    Son contentmastery.io

    Author

    ที่ปรึกษาด้าน Web & SEO สำหรับองค์กรและเจ้าของธุรกิจ ชอบออกแบบแนวทางและวิธีการสอนให้มีประสิทธิภาพมากที่สุด เชื่อว่าความรู้คือหนึ่งในสิ่งที่มีคุณค่ามากที่สุดและจะติดตัวเราไปในทุกที่ หลงไหลในธรรมชาติ การเดินทาง เป็นพ่อของแงว ๆ อยู่หลายตัว เสพติดกาแฟ (อเมริกาโน่) และชอบการจิบเบียร์...ในบางครั้ง