noindex กับ nofollow เป็นคำสั่งคนละชั้นและแก้คนละปัญหา สรุปสั้นที่สุดคือ noindex คุมว่าหน้านั้นจะขึ้นในผลค้นหาไหม ส่วน nofollow คุมว่าจะส่งสัญญาณผ่านลิงก์ไปให้ปลายทางไหม ตัวหนึ่งพูดเรื่องการแสดงผลของหน้า อีกตัวพูดเรื่องความสัมพันธ์ระหว่างหน้ากับ URL ที่มันลิงก์ออกไป จึงใช้แทนกันไม่ได้เลย
ที่คนสับสนกันบ่อยเพราะทั้งสองคำอยู่ในแท็กเดียวกันได้ (meta robots) และเพราะยังมี robots.txt disallow เข้ามาเป็นตัวที่สามซึ่งดูเผินๆ เหมือนทำงานคล้ายกัน แต่จริงๆ แล้วอยู่คนละระดับ ทั้งสามตัวนี้ใช้ผิดจังหวะแล้วผลลัพธ์กลับด้านได้ทันที เช่นตั้งใจจะเอาหน้าออกจาก Google แต่กลับทำให้มันค้างอยู่ในผลค้นหาถาวร
บทความนี้จะแยกให้ชัดทีละชั้นว่าแต่ละคำสั่งทำอะไร ควรใช้กับหน้าแบบไหน จุดที่พลาดกันบ่อยที่สุดคืออะไร และความเชื่อเก่าเรื่องการใช้ nofollow จัดสรรน้ำหนักภายในเว็บที่เลิกได้ผลไปตั้งแต่ปี 2009
noindex กับ nofollow ต่างกันตรงไหนกันแน่
ต่างกันที่ระดับการทำงาน noindex ทำงานที่ระดับหน้า คือบอก search engine ว่าอย่านำหน้านี้ไปแสดงในผลค้นหา ส่วน nofollow ทำงานที่ระดับลิงก์ คือบอกว่าอย่าส่งต่อ PageRank หรือสัญญาณความน่าเชื่อถือไปยัง URL ปลายทางของลิงก์นั้น ไม่ได้สั่งอะไรกับตัวหน้าที่วางลิงก์อยู่เลย
จุดที่ต้องจำให้แม่นคือ Google ต้อง crawl หน้านั้นได้ก่อน ถึงจะเห็นคำสั่ง noindex เพราะคำสั่งนี้ฝังอยู่ในหน้าเอง ไม่ใช่ประกาศไว้ที่ไหนสักที่ให้บอทอ่านล่วงหน้า ต่างจาก robots.txt ที่บอทอ่านก่อนเข้าเว็บ ความต่างข้อนี้เองที่ทำให้เกิดข้อผิดพลาดคลาสสิกซึ่งจะอธิบายละเอียดในหัวข้อถัดๆ ไป
อีกจุดคือ nofollow ไม่ได้แปลว่าห้าม index ปลายทาง ถ้า Google เจอ URL นั้นจากทางอื่น เช่นลิงก์จากเว็บอื่นหรือจาก sitemap มันก็ยังมีสิทธิ์ crawl และ index ตามปกติ nofollow แค่บอกว่าลิงก์เส้นนี้ไม่ควรถูกนับเป็นการรับรอง
| มิติ | meta robots noindex | rel="nofollow" (ระดับลิงก์) | robots.txt disallow |
|---|---|---|---|
| สั่งอะไร | ห้ามแสดงหน้านี้ในผลค้นหา | ไม่ส่งสัญญาณไปยังปลายทางของลิงก์นั้น | ห้ามบอทเข้าไปโหลดหน้านั้น |
| ทำงานที่ระดับไหน | ระดับหน้า (index) | ระดับลิงก์เดี่ยว | ระดับการเข้าถึง (crawl) |
| บอทยังโหลดหน้าได้ไหม | ได้ และต้องได้ถึงจะเห็นคำสั่ง | ได้ ปลายทางอาจถูกพบจากทางอื่น | ไม่ได้ ถูกบล็อกตั้งแต่ก่อนเข้า |
| บังคับหรือเป็นคำใบ้ | เป็นคำสั่ง (directive) | เป็นคำใบ้ (hint) ตั้งแต่ปี 2019 | เป็นคำสั่งเรื่อง crawl แต่ไม่คุม index |
| ทำให้หน้าหลุดจากผลค้นหาไหม | หลุด เมื่อ Google อ่านเจอและประมวลผลแล้ว | ไม่เกี่ยวโดยตรง | ไม่แน่ หน้าอาจยังโผล่แบบไม่มี snippet |
| ช่วยประหยัด crawl budget ไหม | ไม่ เพราะบอทยังต้องเข้ามาอ่านอยู่ | ไม่ใช่จุดประสงค์ของมัน | ช่วยได้ แต่แลกกับผลข้างเคียงด้านบน |
แล้ว meta robots nofollow ทั้งหน้าล่ะ ต่างจาก rel nofollow ยังไง
nofollow มีสองแบบที่คนมักเรียกปนกัน แบบแรกคือ rel="nofollow" ที่ใส่ในแท็ก a ของลิงก์เดี่ยว มีผลเฉพาะลิงก์เส้นนั้นเส้นเดียว แบบที่สองคือ meta name="robots" content="nofollow" ที่ใส่ใน head ของหน้า ซึ่งเหมาเข่งว่าไม่ให้ไล่ตามลิงก์ทุกเส้นในหน้านั้น
ในทางปฏิบัติเรามักเห็นเขียนคู่กันเป็น content="noindex, nofollow" ในหน้าที่ไม่อยากให้ติดอันดับและไม่อยากส่งสัญญาณอะไรออกไปเลย เช่นหน้า staging หรือหน้าระบบหลังบ้าน แต่ถ้าเป็นหน้าเนื้อหาปกติที่แค่ไม่อยากให้ติดอันดับ การใส่ noindex อย่างเดียวมักเพียงพอ ไม่จำเป็นต้องปิดการไล่ลิงก์ในหน้าไปด้วย เพราะจะตัดเส้นทางให้บอทเดินไปเจอหน้าอื่นในเว็บโดยไม่จำเป็น
noindex ทำงานยังไง และควรใช้กับหน้าแบบไหน
noindex คือคำสั่งที่ประกาศผ่านแท็ก meta name="robots" content="noindex" ใน head ของหน้า หรือผ่าน HTTP header ที่ให้ผลเทียบเท่า เมื่อ Google เข้ามาอ่านหน้าและเห็นคำสั่งนี้ มันจะถอดหน้านั้นออกจากผลค้นหาในรอบประมวลผลถัดไป โดยที่ผู้ใช้ทั่วไปยังเปิดหน้านั้นได้ปกติทุกอย่าง
หลักการเลือกใช้คือถามว่า หน้านี้มีคุณค่าสำหรับคนที่ค้นหาจาก Google หรือเปล่า ถ้าคำตอบคือไม่ เช่นเป็นหน้าที่มีความหมายเฉพาะกับคนที่กำลังใช้งานเว็บอยู่ในขั้นตอนนั้น หรือเป็นหน้าที่เนื้อหาบางและซ้ำกันเป็นร้อยหน้าแบบ thin content ก็เข้าข่ายที่ควรใส่ noindex
ข้อควรระวังคืออย่าใส่ noindex เพราะกลัวเนื้อหาซ้ำอย่างเดียว เพราะปัญหาเนื้อหาซ้ำที่ยังต้องการให้ URL เก็บสัญญาณไว้ควรแก้ด้วย canonical มากกว่า อ่านวิธีเลือกระหว่างสองตัวนี้ได้ใน คู่มือ Canonical Tag ซึ่งมีตารางเทียบกับ 301 redirect ไว้ด้วย
- หน้าขอบคุณหลังกรอกฟอร์ม หรือหน้ายืนยันคำสั่งซื้อ
- หน้าผลการค้นหาภายในเว็บ (internal search results) ที่สร้าง URL ใหม่ได้ไม่จำกัด
- หน้า login, หน้าบัญชีผู้ใช้, หน้าตะกร้าสินค้า
- หน้า tag หรือหน้ากรองสินค้าที่เนื้อหาบางและซ้ำกันเอง (ไม่รวมหน้าแบ่งหน้า/pagination ปกติ ซึ่ง Google แนะนำให้ปล่อย indexable ไว้)
- หน้าทดสอบ, staging, preview ที่หลุดขึ้น production
- ไฟล์ PDF ใบเสนอราคาหรือเอกสารภายในที่ไม่อยากให้ค้นเจอ
ใส่ noindex แล้วหน้าจะหายจาก Google ทันทีไหม
ไม่ทันที เพราะคำสั่งจะมีผลก็ต่อเมื่อ Googlebot กลับมา crawl หน้านั้นอีกครั้งแล้วเห็นแท็ก ระยะเวลาจึงขึ้นกับความถี่ในการ crawl ของหน้านั้น หน้าที่มีลิงก์เข้าน้อยหรืออยู่ลึกในโครงสร้างเว็บอาจใช้เวลาหลายสัปดาห์
ถ้าต้องการให้เร็วขึ้น ให้ใช้ URL Inspection ใน Search Console ขอ crawl ใหม่ทีละหน้า และเช็คว่าไม่มีอะไรขวางบอทไม่ให้เข้าถึงหน้านั้น กรณีที่หน้าไม่ยอมหลุดสักที มักไม่ได้เกิดจากแท็กผิด แต่เกิดจากบอทเข้าไม่ถึงหน้าเพื่ออ่านแท็กตั้งแต่แรก ซึ่งเป็นคนละอาการกับกรณีหน้าใหม่ที่ไม่ยอมเข้า index ที่อธิบายไว้ใน ทำไมเว็บไม่ถูก Google index
rel=nofollow ควรใช้ตอนไหน และต่างจาก sponsored กับ ugc ยังไง
nofollow ควรใช้กับลิงก์ที่เราไม่ต้องการรับรองปลายทาง เหตุผลหลักมีสามกลุ่มคือ ลิงก์ที่มีผลประโยชน์เข้ามาเกี่ยวข้อง ลิงก์ที่ผู้ใช้เป็นคนสร้างเอง และลิงก์ออกไปเว็บภายนอกที่เราไม่ได้ตรวจสอบคุณภาพ
ตั้งแต่ปี 2019 Google เพิ่มค่า rel มาอีกสองตัวเพื่อให้ระบุเหตุผลได้ตรงขึ้น คือ sponsored สำหรับลิงก์โฆษณา ลิงก์ที่จ่ายเงิน และ affiliate ส่วน ugc สำหรับลิงก์จากคอมเมนต์ กระทู้ หรือเนื้อหาที่ผู้ใช้โพสต์เอง ทั้งสองตัวใส่ซ้อนกับ nofollow ได้ เช่น rel="sponsored nofollow" ซึ่งเป็นวิธีที่ปลอดภัยกว่าถ้ายังกังวลเรื่องระบบเก่าที่อ่านค่าใหม่ไม่เป็น
สิ่งที่เปลี่ยนไปพร้อมกันในปี 2019 และหลายคนยังไม่รู้คือ Google ปรับสถานะของ nofollow จากคำสั่งบังคับเป็น hint ไม่ใช่คำสั่งบังคับ แปลว่า Google สงวนสิทธิ์ที่จะพิจารณาลิงก์นั้นเองในบางกรณี ดังนั้นอย่าใช้ nofollow เป็นเกราะกันทุกอย่าง ถ้าลิงก์นั้นเป็นลิงก์ซื้อขายจริง การใส่ sponsored ให้ถูกประเภทตั้งแต่แรกปลอดภัยกว่ามาก
- แบนเนอร์โฆษณา ลิงก์สปอนเซอร์ และลิงก์ affiliate ให้ใช้ rel="sponsored"
- ลิงก์ในคอมเมนต์ รีวิว หรือกระทู้ที่ผู้ใช้พิมพ์เอง ให้ใช้ rel="ugc"
- ลิงก์อ้างอิงไปเว็บภายนอกที่ยังไม่ได้ตรวจสอบความน่าเชื่อถือ ให้ใช้ rel="nofollow"
- ลิงก์ที่แลกกันแบบมีข้อตกลงทางธุรกิจ ต้องประกาศให้ตรงตามความจริงเสมอ
ทำไมการประกาศลิงก์ที่จ่ายเงินให้ถูกประเภทถึงสำคัญ
เพราะนโยบายเรื่อง link scheme ของ Google มองการซื้อขายลิงก์ที่ส่งสัญญาณโดยไม่ประกาศเป็นการฝ่าฝืน ซึ่งอาจนำไปสู่ manual action ที่กระทบทั้งเว็บ ไม่ใช่แค่หน้าที่วางลิงก์
สำหรับเว็บที่รับลงบทความหรือมีพื้นที่โฆษณา การวางระบบให้ลิงก์ประเภทนี้ติด sponsored อัตโนมัติตั้งแต่ตอนเผยแพร่ ง่ายกว่าการมานั่งไล่แก้ย้อนหลังตอนที่เนื้อหาสะสมไปหลายร้อยชิ้นแล้วมาก
ทำไมห้ามใส่ noindex ในหน้าที่โดน robots.txt disallow
เพราะสองคำสั่งนี้ขัดกันเองในทางเทคนิค ห้าม disallow หน้าที่ต้องการ noindex เนื่องจาก disallow บล็อกบอทตั้งแต่ระดับการเข้าถึง Googlebot จึงโหลดหน้าไม่ได้เลย และไม่มีทางเห็น meta noindex ที่ฝังอยู่ใน head ของหน้านั้น ผลคือคำสั่งที่ตั้งใจไว้ไม่เคยถูกอ่าน
สิ่งที่เกิดขึ้นจริงคือถ้าหน้านั้นเคยถูก index ไว้ก่อน หรือมีลิงก์จากเว็บอื่นชี้เข้ามา Google อาจยังคงแสดง URL นั้นในผลค้นหาต่อไป เพียงแต่แสดงแบบไม่มีคำอธิบาย บางครั้งขึ้นข้อความทำนองว่าไม่มีข้อมูลสำหรับหน้านี้ ซึ่งดูแย่กว่าปล่อยไว้เฉยๆ เสียอีก
ลำดับที่ถูกต้องคือปล่อยให้หน้านั้น crawl ได้ตามปกติก่อน ใส่ noindex รอจน Google ประมวลผลและถอดหน้าออกจากผลค้นหาเรียบร้อย ถ้าหลังจากนั้นยังอยากประหยัดการ crawl ค่อยไป disallow ทีหลังได้ ไม่ใช่ทำสองอย่างพร้อมกันตั้งแต่แรก รายละเอียดว่า robots.txt คุมอะไรได้บ้างและต่างจาก sitemap ยังไง อ่านต่อได้ที่ Sitemap กับ robots.txt ต่างกันยังไง
เขียน noindex ลงใน robots.txt ได้ไหม
ไม่ได้ noindex ใน robots.txt ใช้ไม่ได้อีกแล้วตั้งแต่ 1 กันยายน 2019 ก่อนหน้านั้นมันเป็นกฎที่ไม่เคยอยู่ในเอกสารทางการ แต่ Google เคยรองรับให้แบบไม่เป็นทางการ พอประกาศเลิกรองรับอย่างเป็นทางการแล้ว บรรทัดพวกนี้ในไฟล์ก็ไม่มีผลใดๆ ทั้งสิ้น
ในรอบเดียวกัน Google ยังเลิกรองรับ crawl-delay และ nofollow ที่เขียนใน robots.txt ด้วย ถ้าเว็บไหนยังมีบรรทัดเหล่านี้ค้างอยู่จากยุคก่อน ให้ย้ายไปใช้ meta robots tag หรือ X-Robots-Tag header แทน แล้วลบบรรทัดที่ไม่มีผลออกเพื่อไม่ให้คนในทีมเข้าใจผิดว่ายังทำงานอยู่
X-Robots-Tag ใช้ตอนไหน
ใช้ตอนที่ฝังแท็ก meta ไม่ได้ หรือไม่สะดวกแก้ที่ตัวหน้า X-Robots-Tag คือการส่งคำสั่งเดียวกันกลับมาในรูปของ HTTP response header เช่น X-Robots-Tag: noindex, nofollow ซึ่งรับค่าพารามิเตอร์ชุดเดียวกับ meta robots ได้ทั้งหมด ไม่ว่าจะเป็น noindex, nofollow, noarchive หรือ nosnippet
กรณีที่ใช้บ่อยที่สุดคือไฟล์ที่ไม่ใช่ HTML เพราะไฟล์พวกนี้ไม่มี head ให้ใส่แท็ก เช่นไฟล์ PDF, DOCX, ไฟล์ Excel หรือรูปภาพที่อัปโหลดขึ้นเว็บแล้วไม่อยากให้ค้นเจอ ทางเดียวที่จะสั่ง noindex กับไฟล์เหล่านี้ได้คือส่งผ่าน header
อีกกรณีคือการคุมเป็นชุดที่ระดับ server หรือ CDN เช่นอยากปิด index ทั้งโดเมนของ staging ในทีเดียวโดยไม่ต้องไล่แก้ทุกเทมเพลต การตั้งกฎที่ระดับ server ทำได้เร็วกว่าและพลาดน้อยกว่า แต่ต้องจดไว้ให้ทีมรู้ด้วย เพราะคนที่มาดูทีหลังจะเปิดโค้ดหน้าเว็บแล้วหาสาเหตุไม่เจอว่าทำไมหน้าถึงไม่ติด index
ใช้ nofollow จัดสรรน้ำหนัก PageRank ในเว็บได้จริงไหม
ไม่ได้ และเลิกได้ผลไปตั้งแต่ปี 2009 แล้ว แนวคิดที่เรียกกันว่า link sculpting คือการใส่ nofollow ให้ลิงก์ภายในที่ไม่สำคัญ เช่นลิงก์ไปหน้านโยบายหรือหน้าเข้าสู่ระบบ โดยหวังว่าน้ำหนักจะถูกบีบไปรวมที่หน้าสำคัญแทน
ความจริงที่ Google อธิบายไว้คือ PageRank ที่ไหลผ่านลิงก์ nofollow จะหายไปเฉยๆ ไม่ถูกกระจายต่อให้ลิงก์อื่นในหน้าเดียวกัน พูดง่ายๆ คือไม่ได้เอาน้ำหนักมาแบ่งใหม่ แต่เป็นการทิ้งน้ำหนักส่วนนั้นไปเปล่าๆ ยิ่ง nofollow ลิงก์ภายในเยอะ ยิ่งเสียของ
สิ่งที่ได้ผลกว่ามากคือการออกแบบโครงสร้างลิงก์ภายในให้หน้าสำคัญมีลิงก์เข้าถึงมากและอยู่ตื้น แทนที่จะพยายามปิดกั้นลิงก์ที่ไม่สำคัญ และถ้ากังวลว่าบอทเสียเวลาไปกับหน้าที่ไม่มีค่า ให้ไปจัดการที่ระดับ crawl ตามแนวทางใน Crawl Budget คืออะไร แทน ซึ่งตรงประเด็นกว่าการใส่ nofollow ให้ลิงก์ภายใน
เช็คลิสต์ก่อนใส่ noindex หรือ nofollow
ก่อนลงมือ ให้ตอบสองคำถามนี้ให้ได้ก่อนเสมอ หนึ่ง ปัญหาที่จะแก้อยู่ที่ระดับหน้า ระดับลิงก์ หรือระดับการเข้าถึง และสอง ถ้าคำสั่งนี้ทำงานสำเร็จ ผลลัพธ์ที่ต้องการเห็นในผลค้นหาคืออะไร ถ้าตอบสองข้อนี้ไม่ได้ แปลว่ายังไม่ควรแตะแท็กพวกนี้
ประสบการณ์จากการตรวจเว็บพบว่าเคสที่เสียหายหนักมักไม่ได้เกิดจากใช้แท็กผิดตัว แต่เกิดจากใส่ noindex ทิ้งไว้ในเทมเพลตตอนขึ้นเว็บใหม่แล้วลืมเอาออก หน้าทั้งหมวดจึงไม่เคยติดอันดับเลย ดังนั้นเวลามีการ deploy ครั้งใหญ่ ควรมีขั้นตอนไล่เช็คแท็กเหล่านี้อยู่ในเช็คลิสต์ทุกครั้ง
ถ้าตรวจแล้วไม่แน่ใจว่าหน้าไหนในเว็บโดนคำสั่งพวกนี้อยู่บ้าง ทีม SEONo1 รับตรวจทั้งเว็บให้ได้ผ่านบริการ ตรวจสุขภาพเว็บ SEO Audit แล้วส่งรายการหน้าที่ตั้งค่าขัดกันพร้อมลำดับการแก้กลับไปให้
- ต้องการเอาหน้าออกจากผลค้นหา ใช้ meta noindex และห้าม disallow หน้านั้นใน robots.txt
- ต้องการซ่อนไฟล์ที่ไม่ใช่ HTML เช่น PDF ใช้ X-Robots-Tag ที่ระดับ server
- ต้องการไม่รับรองลิงก์ออก ใช้ rel nofollow และเลือก sponsored หรือ ugc ให้ตรงเหตุผล
- ต้องการรวมสัญญาณของ URL ที่เนื้อหาซ้ำแต่ยังต้องเปิดใช้งาน ใช้ canonical ไม่ใช่ noindex
- หลัง deploy ทุกครั้ง ตรวจว่าไม่มี noindex ค้างในเทมเพลตหน้าสำคัญ
- ตรวจซ้ำใน Search Console ว่าค่าที่ Google เห็นจริงตรงกับที่ตั้งไว้
คำถามที่พบบ่อย
01สรุปสั้นที่สุด noindex กับ nofollow ต่างกันยังไง+
noindex สั่งที่ระดับหน้า คือไม่ให้หน้านั้นแสดงในผลค้นหา ส่วน nofollow สั่งที่ระดับลิงก์ คือไม่ส่งสัญญาณความน่าเชื่อถือไปยัง URL ปลายทางของลิงก์นั้น ใช้แทนกันไม่ได้ เพราะตัวหนึ่งคุมการแสดงผลของหน้าตัวเอง อีกตัวคุมความสัมพันธ์ที่หน้านั้นมีต่อ URL อื่น
02ใส่ noindex แล้วบล็อกใน robots.txt ด้วยได้ไหม จะได้กันเหนียว+
ไม่ควรทำ เพราะ robots.txt disallow บล็อกบอทตั้งแต่ก่อนเข้าเว็บ Googlebot จึงอ่านไม่เห็น meta noindex ที่อยู่ในหน้า ผลคือหน้าอาจยังค้างในผลค้นหาแบบไม่มีคำอธิบาย วิธีที่ถูกคือปล่อยให้ crawl ได้จน Google ประมวลผล noindex เสร็จและถอดหน้าออกก่อน ถ้าจำเป็นจริงค่อย disallow ทีหลัง
03เขียน noindex ใน robots.txt ยังใช้ได้อยู่ไหม+
ใช้ไม่ได้แล้ว Google ประกาศเลิกรองรับอย่างเป็นทางการเมื่อ 1 กันยายน 2019 พร้อมกับเลิกรองรับ crawl-delay และ nofollow ในไฟล์เดียวกัน ถ้าต้องการสั่ง noindex ต้องใช้ meta robots tag ในหน้า หรือ X-Robots-Tag ใน HTTP header เท่านั้น
04nofollow กับ sponsored และ ugc ต่างกันยังไง ควรเลือกตัวไหน+
ทั้งสามเป็นคำใบ้ที่บอกว่าไม่ควรส่งสัญญาณผ่านลิงก์เหมือนกัน แต่ระบุเหตุผลต่างกัน sponsored ใช้กับลิงก์โฆษณา ลิงก์ที่จ่ายเงิน และ affiliate ส่วน ugc ใช้กับลิงก์จากคอมเมนต์หรือเนื้อหาที่ผู้ใช้โพสต์เอง ส่วน nofollow ใช้กับลิงก์ทั่วไปที่ไม่อยากรับรอง ใส่ซ้อนกันได้ เช่น sponsored nofollow
05ใส่ nofollow ให้ลิงก์ภายในเพื่อดันน้ำหนักไปหน้าสำคัญ ได้ผลไหม+
ไม่ได้ผล Google ระบุตั้งแต่ปี 2009 ว่าน้ำหนักที่ไหลผ่านลิงก์ nofollow จะหายไป ไม่ได้ถูกกระจายต่อให้ลิงก์อื่นในหน้าเดียวกัน การ nofollow ลิงก์ภายในจึงเป็นการทิ้งน้ำหนักเปล่าๆ ทางที่ได้ผลกว่าคือจัดโครงสร้างลิงก์ภายในให้หน้าสำคัญเข้าถึงง่ายและอยู่ตื้น

