สวัสดีครับชาว 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 จะมองว่า
เป็นการสิ้นเปลืองรีซอร์สในการ crawl
อาจทำให้ link juice กระจายไปทั้ง 2 versions (ซึ่งไม่ควรเด้อ)
สร้างความสับสนว่า 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
ขั้นตอนหลังจากแก้ไข
- Restart Nginx/Apache หลังจากแก้ไข config
sudo nginx -t # ทดสอบ config
sudo systemctl restart nginx
- ลองเข้า
https://www.contentmastery.io/
- ต้อง redirect ไป
https://contentmastery.io/
อัตโนมัติ - ตรวจสอบด้วย HTTP status checker ต้องได้ 301
- ไปที่ Page indexing report
- คลิก "Alternate page with proper canonical tag"
- เลือกหน้าที่ต้องการ
- คลิก "Validate Fix"
- Google จะใช้เวลา 3-14 วัน ในการตรวจสอบ
- ถ้าผ่าน status จะเปลี่ยนเป็น "Passed"
สรุป
ปัญหา "Alternate page with proper canonical tag" แก้ได้ไม่ยากครับ สิ่งสำคัญคือเราต้อง
- เลือกว่าจะใช้ www หรือ non-www เป็นหลัก
- ทำ 301 redirect จาก version ที่ไม่ใช้ไปยัง version หลัก
- ตรวจสอบ canonical tag ให้ถูกต้อง
- Request validation ใน Search Console
จากประสบการณ์ของผม หลังจากทำ redirect แล้ว ปัญหานี้จะหายไปภายใน 2-3 สัปดาห์ครับ และหน้าเว็บที่เคยติดปัญหาก็จะถูก index ตามปกติ จากแยกไป 2 ร่าง ก็จะกลายมารวมพลังกันตามปกติ ทำให้หน้าเว็บไม่ถูกแบ่งพลังออกไป
ถ้าใครเจอปัญหานี้แล้วลองทำตามแล้วยังไม่หาย หรือติดปัญหาตรงไหน คอมเมนต์มาถามได้นะครับ ยินดีช่วยเหลือ
ปล. อย่าลืมเช็คใน Search Console เป็นระยะ ๆ นะครับ บางทีปัญหาแบบนี้อาจเกิดขึ้นโดยที่เราไม่รู้ตัว โดยเฉพาะเวลาที่มีการเปลี่ยนแปลงโครงสร้างเว็บหรือย้าย hosting