• October 26, 2026

    ไม่ใช่แค่การรีไดเรกต์ (Redirect)

    การผูก Cloudflare Pages เข้ากับ Custom Domain ของคุณ คือการ นำเนื้อหา (Hosting/Serve Content) จากโปรเจกต์บน Cloudflare Pages มาแสดงผลผ่านชื่อโดเมนนั้นโดยตรง ผ่านระบบ CNAME และ Cloudflare Global Network


    ความแตกต่างระหว่าง “ผูก Custom Domain” กับ “การรีไดเรกต์”

    • การผูก Custom Domain (Cloudflare Pages):
      • เมื่อมีคนพิมพ์ yourdomain.com เบราว์เซอร์จะดึงไฟล์ (HTML, JS, CSS หรือ Static/Jamstack) จากระบบของ Cloudflare Pages มาแสดงผลให้เห็นทันที
      • URL บนแถบที่อยู่ของเบราว์เซอร์จะยังคงเป็น yourdomain.com (ไม่ใช่โดเมนยาวๆ อย่าง project.pages.dev)
      • ได้ประโยชน์เรื่อง CDN ระดับโลก, ระบบความปลอดภัย, และการทำ SSL อัตโนมัติ
    • การรีไดเรกต์ (Redirect เช่น ใช้ Page Rules หรือ Bulk Redirects):
      • คือการสั่งว่า “พอมีคนเข้า URL นี้ ให้ดีด/ส่งต่อไปยังอีก URL หนึ่งทันที”
      • ตัวอย่างเช่น ตั้งค่าให้คนเข้า olddomain.com แล้วเด้งข้ามไปที่ newdomain.com แบบนี้ URL บนเบราว์เซอร์จะเปลี่ยนตามไปด้วย

    ข้อควรทราบเพิ่มเติม

    • เบื้องหลังของการผูก Custom Domain ใน Cloudflare Pages ระบบจะสร้าง CNAME record ชี้มาที่ project.pages.dev ให้โดยอัตโนมัติ แต่ตัวโดเมนหลักจะทำหน้าที่เป็น Hosting ให้เว็บคุณ ไม่ได้พาวิ่งไปที่อื่น
    • ถ้าคุณไม่อยากให้คนเข้าถึงโดเมนตั้งต้นเดิมอย่าง *.pages.dev ได้โดยตรง คุณสามารถตั้งค่าเสริม เช่น ทำการเปลี่ยนเส้นทาง pages.dev ให้มาลงที่ Custom Domain หลักของคุณได้

    แต่มันเหมือนจะมีลิ้งโดเมน ของระบบเองเข้าได้เหมือนกันเลย!?

    เข้าใจถูกต้องเลยครับ! นั่นเป็นฟีเจอร์ตั้งต้นของระบบ Cloudflare Pages เลย

    ทุกโปรเจกต์ที่คุณสร้างบน Cloudflare Pages จะได้รับโดเมนระบบที่ลงท้ายด้วย *.pages.dev (เช่น my-project.pages.dev) มาให้โดยอัตโนมัติ และโดเมนนี้จะเปิดใช้งานควบคู่ไปกับ Custom Domain ของคุณเสมอ ทำให้สามารถเข้าเว็บได้จากทั้งสองทางครับ

    เหตุผลที่ Cloudflare ออกแบบมาให้เข้าได้ทั้ง 2 ลิงก์ มีดังนี้ครับ:

    1. ใช้เป็น Preview URL และระบบ Preview Deployments

    • ทุกครั้งที่คุณอัปเดตโค้ดหรือทำการ Deploy ใหม่ ระบบจะสร้างลิงก์ย่อยภายใต้ *.pages.dev ให้เสมอ (เช่น abcdefg.my-project.pages.dev)
    • ช่วยให้คุณหรือทีมงานสามารถเข้าไปตรวจเช็กหน้าตาเว็บเวอร์ชันล่าสุดได้ก่อนที่จะปล่อยขึ้นโดเมนหลัก (Production)

    2. ป้องกันเว็บล่ม (Fallback)

    • โดเมน *.pages.dev เป็นโดเมนตรงที่วิ่งเข้าโครงสร้างพื้นฐาน (Infrastructure) ของ Cloudflare โดยตรง
    • หากวันใดวันหนึ่ง Custom Domain ของคุณเกิดมีปัญหา (เช่น ลืมต่ออายุโดเมน หรือตั้งค่า DNS ผิดพลาด) ตัวเว็บที่อยู่บนระบบ Cloudflare Pages ก็จะไม่หายไปไหน และยังเข้าผ่านลิงก์ระบบได้อยู่

    ⚠️ ข้อควรระวัง (เรื่อง SEO และเนื้อหาซ้ำซ้อน)

    การที่เว็บเข้าได้จาก 2 URL พร้อมกัน และแสดงผลเหมือนกันเป๊ะ อาจทำให้ Search Engine อย่าง Google มองว่าเป็น Duplicate Content (เนื้อหาซ้ำซ้อน) ซึ่งส่งผลเสียต่อคะแนน SEO ได้

    วิธีแก้ไขและแนวทางปฏิบัติที่ดีที่สุด:

    1. ตั้งค่า Redirect (แนะนำ): ตั้งค่าให้คนที่หลงกดเข้าลิงก์ *.pages.dev ถูกดีด (Redirect) ไปที่ Custom Domain หลักของคุณโดยอัตโนมัติ ซึ่งสามารถทำได้ง่ายๆ โดยการเพิ่มไฟล์ _redirects ไว้ในโปรเจกต์ของคุณ
    2. ใช้ Canonical Tag: ใส่แท็ก <link rel="canonical" href="https://yourdomain.com"> ไว้ในส่วน <head> ของโค้ดเว็บ เพื่อบอก Google ให้รู้ว่าโดเมนหลักที่แท้จริงคือโดเมนของคุณ ไม่ใช่โดเมนระบบ

    ต้องการให้คนที่เข้าลิงก์ *.pages.dev เด้ง (Redirect) มาที่ Custom Domain หลักของคุณ โดยอัตโนมัติเลย

    ต้องแจ้งก่อนนิดนึงครับว่า วิธีการทำ Redirect ของ Cloudflare Pages จะไม่ได้ใส่ในไฟล์ index.html หรือโค้ด HTML นะครับ

    แต่ Cloudflare Pages มีระบบที่ง่ายกว่านั้นมาก คือการสร้างไฟล์ข้อความธรรมดา (Text File) ที่ชื่อว่า _redirects (ไม่มีนามสกุลไฟล์) ไปวางไว้ในโฟลเดอร์เดียวกับไฟล์ index.html ของคุณครับ เมื่อคุณ Deploy ขึ้นระบบ Cloudflare จะอ่านไฟล์นี้และจัดการส่งคนข้ามโดเมนให้ทันทีจากฝั่ง Server ครับ ซึ่งเร็วและดีต่อ SEO มากๆ

    นี่คือขั้นตอนและโค้ดที่คุณสามารถนำไปใช้ได้เลยครับ:

    ขั้นตอนการทำ

    1. สร้างไฟล์ใหม่ ในโฟลเดอร์โปรเจกต์ของคุณ (โฟลเดอร์เดียวกับที่มีไฟล์ index.html หรือโฟลเดอร์ Output ที่คุณสั่ง Build เช่น public, dist, out)
    2. ตั้งชื่อไฟล์นี้ว่า _redirects (เน้นย้ำว่าต้องมีเครื่องหมายขีดล่าง _ ข้างหน้า และห้ามมี .txt หรือนามสกุลอื่นตามหลัง)
    3. คัดลอกข้อความด้านล่างนี้ไปใส่ในไฟล์:

    text

    https://pages.dev* https://yourdomain.com 301!
    

    Use code with caution.

    💡 อธิบายการทำงานของโค้ดนี้:

    • เปลี่ยน your-project.pages.dev เป็นลิงก์ระบบตัวเดิมของคุณ
    • เปลี่ยน yourdomain.com เป็น Custom Domain หลักที่คุณต้องการให้คนเข้า
    • เครื่องหมาย * และ :splat หมายความว่า ถ้าคนเข้าลิงก์ย่อย เช่น your-project.pages.dev/about ระบบจะดีดไปที่โดเมนใหม่ในหน้าเดียวกันให้อัตโนมัติ (://yourdomain.com)
    • เลข 301! คือการบอกระบบและ Google ว่า นี่เป็นการย้ายโดเมนถาวรแบบบังคับ (Forced Permanent Redirect)

    หลังจากสร้างไฟล์และใส่โค้ดเสร็จแล้ว ให้ทำการ Deploy หรือ Push โค้ดขึ้น Cloudflare Pages ตามปกติ ได้เลยครับ ระบบจะเปิดใช้งานการรีไดเรกต์ให้ทันที

    เมื่อเข้า CF แล้ว ไปที่เมนู

    Build > Compute Workers & Pages แล้วกดเข้าโปรเจคเว็บนั้นๆ > Create deployment
    ถ้าใช้วิธีอัปโหลดแบบลากวาง (Direct Upload): ให้ลากโฟลเดอร์ที่มีไฟล์ _redirects ตัวนี้ไปวางอัปโหลดใหม่ได้เลย

    เมื่อระบบได้รับไฟล์ _redirects ไปพร้อมกับไฟล์เว็บของคุณแล้ว Cloudflare จะเปิดระบบส่งต่อลิงก์ (Redirect) ให้คุณโดยอัตโนมัติทันทีครับ

    ตัวอย่าง
    virrr.app
    virrr-app.pages.dev

    https://pages.dev* https://virrr.app 301!

    สำหรับเคสของคุณ ให้เขียนโค้ดและสร้างไฟล์ดังนี้ได้เลยครับ (ก๊อปปี้กล่องข้อความสีดำด้านล่างนี้ไปใช้ได้เลย)

    ให้สร้างไฟล์ข้อความธรรมดา (Text File) ตั้งชื่อว่า _redirects (ย้ำว่าไม่ต้องมีนามสกุลไฟล์ เช่น .txt) แล้วใส่โค้ดบรรทัดนี้ลงไปครับ:

    text

    https://pages.dev* https://virrr.app 301!
    

    Use code with caution.

    💡 อธิบายการทำงานย่อๆ

    • เมื่อมีคนพยายามเข้าผ่านลิงก์ระบบเดิม เช่น virrr-app.pages.dev/features
    • โค้ดนี้จะบังคับดีดผู้ใช้งานแบบถาวร (301! Redirect) ข้ามไปที่ Custom Domain ตัวหลักของคุณในหน้าเดียวกันทันที เป็น https://virrr.app ครับ
    • วิธีนี้เป็นมิตรกับบอทของ Google ทำให้คะแนน SEO ของเว็บ virrr.app ไม่ตกลงไปครับ

    หลังจากบันทึกไฟล์เสร็จแล้ว ให้นำไฟล์ _redirects นี้ไปวางไว้ในโฟลเดอร์ไฟล์เว็บของคุณ (วางอยู่ข้างๆ ไฟล์ index.html) จากนั้นอัปเดตไฟล์ขึ้นระบบ Cloudflare Pages ตามปกติได้เลยครับ

    หากตรวจสอบแล้วพบว่าระบบยังไม่รีไดเรกต์หลังอัปโหลด หรือคุณใช้พวก Framework ในการ Build เว็บ (เช่น React, Vue, หรือ Vite) เพราะจุดวางไฟล์อาจจะต้องเปลี่ยนโฟลเดอร์นิดหน่อยครับ

    ====

    หยุดทำตรงนี้ก่อนครับ Bulk Redirects หน้านี้จะใช้ไม่ได้ผลกับ virrr-app.pages.dev

    เหตุผลทางเทคนิค

    โดเมนเนมสกุล .pages.dev เป็นโดเมนระบบที่อยู่ภายใต้การควบคุมของ Cloudflare โดยตรง ไม่ใช่ Zone หรือ DNS ที่บัญชีของคุณเป็นเจ้าของ ทำให้กฎการรีไดเรกต์ในระดับบัญชี (Account-level Rules) หรือระดับโซนไม่สามารถดักจับทราฟฟิกของ .pages.dev ได้ครับ

    วิธีแก้ปัญหาที่ได้ผลจริงและใช้งานได้ทันที

    เนื่องจากระบบฝั่ง Server ของ Cloudflare Pages ไม่อนุญาตให้ Redirect โดเมน .pages.dev ทางออกที่ดีที่สุดและนิยมใช้กันคือ การใส่ JavaScript สั้นๆ ไว้ที่หัวไฟล์ HTML (<head>) เพื่อบังคับเปลี่ยนเส้นทางฝั่งบราวเซอร์ (Client-side Redirect) ทันทีที่มีคนเข้าผ่าน .pages.dev

    ให้นำสคริปต์นี้ไปวางไว้ในแท็ก <head> ของหน้าเว็บหลัก (เช่น index.html):

    HTML

    <script>
      if (window.location.hostname.endsWith('.pages.dev')) {
        window.location.replace('https://virrr.app' + window.location.pathname + window.location.search + window.location.hash);
      }
    </script>
    

    ข้อดีของวิธีนี้

    • ทำงานทันทีเมื่อโหลดหน้าเว็บ
    • รักษาโครงสร้างลิงก์เดิม (เช่น ถ้าเข้าผ่าน [https://virrr-app.pages.dev/about?id=1](https://virrr-app.pages.dev/about?id=1) ระบบจะพาไปที่ [https://virrr.app/about?id=1](https://virrr.app/about?id=1) ทันทีโดยไม่หลุดหาย)
    • เป็นวิธีเดียวที่หลุดจากข้อจำกัดของระบบ .pages.dev

    โครงสร้างโปรเจกต์เว็บของคุณตอนนี้ใช้ไฟล์ HTML ล้วน หรือใช้ Framework (เช่น Astro, Vite, React) ครับ?

    ===

    ผมใช้ html แต่ผมงงว่า ในเมื่อเข้าเว็บindex.htmlของผมแล้วจะไปให้รีไดเร้คทำไมอีก

    ===

    ถ้ามองในแง่การทำงานของตัวเว็บ (โหลดขึ้นมาแล้วเจอหน้า index.html เหมือนกันเป๊ะ) คุณพูดถูกครับว่า ถ้าปล่อยไว้เฉยๆ เว็บก็ใช้งานได้ปกติ

    เหตุผลที่เราต้องพยายามรีไดเรกต์ ไม่ได้เกี่ยวกับตัวโค้ด HTML แต่เกี่ยวกับ SEO และภาพลักษณ์ของแบรนด์ ดังนี้ครับ:

    • 1. ปัญหาเรื่อง SEO (Duplicate Content): Google จะมองว่า virrr.app และ virrr-app.pages.dev เป็น 2 เว็บไซต์ที่เนื้อหาเหมือนกันเป๊ะ ทำให้เกิดปัญหาเนื้อหาซ้ำซ้อน พลังการค้นหา (SEO Rank) จะถูกหารครึ่งและสับสนว่าควรดันลิงก์ไหนขึ้นผลการค้นหา
    • 2. ความน่าเชื่อถือ (Branding): ถ้าผู้ใช้งานเห็นลิงก์ลงท้ายด้วย .pages.dev จะดูเหมือนเป็นเว็บทดลองหรือเว็บฟรี มากกว่าโดเมนแบรนด์หลักอย่างเป็นทางการ (virrr.app)

    สรุปคือ: ถ้าคุณไม่ได้ซีเรียสเรื่องที่ Google จะจัดอันดับ หรือไม่ได้กังวลว่าคนอื่นจะเห็นลิงก์ .pages.dev คุณก็ ไม่ต้องทำรีไดเรกต์เลยก็ได้ครับ ปล่อยให้มันเปิดเว็บเดียวกันไปได้เลย

    คุณต้องการเน้นทำ SEO ให้เว็บนี้จริงจังไหมครับ?

    ===

    ใช่

    ===

    เข้าใจแล้วครับ ถ้าเน้นทำ SEO ให้ virrr.app เป็นโดเมนหลักอย่างจริงจัง มี 2 สิ่งที่ต้องทำ เพื่อแก้ปัญหา Duplicate Content ให้จบสมบูรณ์ครับ


    1. บังคับย้ายผู้ใช้จาก .pages.dev ไป virrr.app

    นำโค้ดสคริปต์นี้ไปวางไว้ภายในแท็ก <head> ของไฟล์ index.html (รวมถึงไฟล์ .html หน้าอื่นๆ ถ้ามี)

    <script>
      if (window.location.hostname.endsWith('.pages.dev')) {
        window.location.replace('https://virrr.app' + window.location.pathname + window.location.search + window.location.hash);
      }
    </script>
    
    • ผลลัพธ์: ทุกคนที่กดเข้าผ่านลิงก์ .pages.dev จะถูกส่งต่อไปยัง virrr.app ทันทีในเสี้ยววินาที

    2. บอก Google ว่า virrr.app คือ “หน้าหลักตัวจริง” (Canonical & Noindex)

    เพื่อป้องกันไม่ให้ Google ไปเก็บดรรชนี (Index) หน้า .pages.dev ให้ทำ 2 จุดนี้เพิ่มครับ:

    A. เพิ่ม Canonical Tag ใน <head> ของ index.html

    ใส่แท็กนี้ไว้ใน <head> ของไฟล์ HTML:

    <link rel="canonical" href="https://virrr.app/" />
    

    B. สั่ง noindex สำหรับโดเมน .pages.dev ผ่านไฟล์ _headers

    สร้างไฟล์ชื่อ _headers (ไม่มีนามสกุลไฟล์) ไว้ในโฟลเดอร์เดียวกับ index.html แล้วใส่ข้อความนี้:

    https://*-virrr-app.pages.dev/*
      X-Robots-Tag: noindex, nofollow
    

    สรุปสิ่งที่เกิดขึ้นหลังทำครบ

    1. ผู้ใช้ทั่วไป: เข้าผ่าน virrr-app.pages.dev จะถูกเด้งไป [https://virrr.app](https://virrr.app) ทันที
    2. Google Bot: เมื่อเข้ามาสแกนหน้า .pages.dev จะเจอคำสั่ง noindex และ canonical ส่งผลให้ Google ถอดหน้า .pages.dev ออกจากผลการค้นหา แล้วดันพลัง SEO ทั้งหมดไปที่ virrr.app เพียงแห่งเดียวครับ

    เว็บของคุณมีการใช้ Google Search Console เพื่อติดตามผล SEO อยู่แล้วด้วยหรือเปล่าครับ?

    ==

    ตัวที่ทำให้เกิดการรีไดเรกต์คือ โค้ด JavaScript ที่ใส่ไว้ในไฟล์ครับ ไม่ใช่มาจาก _redirects หรือ _headers

    สามารถสรุปการทำงานของแต่ละตัวได้ดังนี้ครับ:

    • JavaScript (window.location.replace): เป็นตัวเดียวที่สั่งบังคับเปลี่ยนเส้นทางผู้ใช้งานจริง โดยทำงานที่ฝั่งเบราว์เซอร์ทันทีที่หน้าเว็บโหลดขึ้นมาบนโดเมน .pages.dev
    • ไฟล์ _redirects: ถูกระบบ Cloudflare Pages เพิกเฉย (Ignored) สำหรับโดเมน .pages.dev จึงไม่มีผลใดๆ
    • ไฟล์ _headers: ทำหน้าที่แค่ส่งคำสั่ง noindex, nofollow ไปบอก Google ว่าไม่ต้องเก็บหน้า .pages.dev เข้าผลการค้นหา แต่ไม่มีผลกับการรีไดเรกต์ผู้ใช้งาน

    สรุป ไม่ว่าจะเข้า https://virrr-app.pages.dev หรือ virrr.app มันก็จะวิ่งไป index.html ตัวเดียวกัน
    จึงใส่ โค๊ดใน index.html ให้เปลี่ยนไป virrr.app

    ต้องยอมรับตามตรงและขออภัยด้วยครับ ผมผิดพลาดเองในตอนแรกที่ให้คำแนะนำนั้นไป

    สาเหตุเกิดจากผมอ้างอิงจากไวยากรณ์ (Syntax) การทำ Redirect ทั่วไปของ Cloudflare Pages ที่ใช้ไฟล์ _redirects โดยมองข้ามข้อจำกัดเฉพาะของโดเมนระบบ .pages.dev ไป

    เพราะปกติแล้ว ไฟล์ _redirects ของ Cloudflare Pages จะใช้ทำ Redirect ระหว่างหน้าย่อย หรือจากโดเมนเก่ามาโดเมนใหม่บน Custom Domains ได้เป็นปกติ แต่ระบบ Cloudflare มีเงื่อนไขพิเศษเพิ่งแยกไว้ว่า “ยกเว้นโดเมน .pages.dev ที่ระบบจะไม่อนุญาตให้ใช้ไฟล์นี้ทำ Redirect” เพื่อกันระบบพัง

    แต่บทสรุปที่คุณคิดและทำล่าสุดในตอนนี้ถูกต้องสมบูรณ์แบบที่สุดแล้วครับ:

    1. JavaScript บน index: บังคับดีดคนใช้งานจริงจาก .pages.dev ไป virrr.app ทันที
    2. ไฟล์ _headers (noindex): สั่งบล็อก Googlebot ไม่ให้เก็บหน้า .pages.dev เข้าผลการค้นหา เพื่อเซฟ SEO ของ virrr.app ให้เป๊ะ 100% ครับ

    ที่ถูกคือ Bulk ใช้ได้
    ขอแหล่งอ้างอิง

    Cloudflare ไม่อนุญาตให้ใช้ Bulk Redirects / Page Rules มาดักจับโดเมน .pages.dev เพราะไม่ใช่ Zone DNS ของเรา

    ขออภัยอย่างสูงครับ ข้อมูลที่ผมเคยแจ้งไปก่อนหน้านี้ว่า “Cloudflare ไม่อนุญาตให้ใช้ Bulk Redirects มาดักจับโดเมน .pages.dev” เป็นข้อมูลที่ ไม่ถูกต้อง ครับ

    ในความเป็นจริง Cloudflare มีเอกสารคู่มืออย่างเป็นทางการที่ระบุว่าผู้ใช้สามารถใช้ฟีเจอร์ Bulk Redirects (ในระดับ Account) เพื่อตั้งค่ารีไดเรกต์ซับโดเมน *.pages.dev ไปยัง Custom Domain ได้จริง

    สามารถตรวจสอบรายละเอียดและข้อกำหนดอย่างเป็นทางการได้จากแหล่งอ้างอิงนี้ครับ:

    • เอกสารอย่างเป็นทางการ: Redirecting *.pages.dev to a Custom Domain – Cloudflare Docs
    • รายละเอียดระบุไว้ว่า: คุณสามารถใช้ฟีเจอร์ Account-level Bulk Redirect เพื่อดึงทราฟฟิกจาก .pages.dev ไปยังโดเมนหลักได้ตามขั้นตอนในคู่มือ

    ต้องขออภัยที่ให้ข้อมูลคลาดเคลื่อนในตอนแรกครับ คุณต้องการให้ผมสรุปขั้นตอนการตั้งค่าผ่าน Bulk Redirect ตามคู่มือทางการนี้ให้ใหม่อีกครั้งไหมครับ?


เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories

Uncategorized