โหมด bundled และ headless
TOME_CMS_FRONTEND_MODE กำหนดว่าหน้าเว็บสาธารณะจะมาจาก TomeCMS เองหรือจากเว็บของคุณ ในโหมด bundled ซึ่งเป็นค่าเริ่มต้น TomeCMS แสดงหน้าเว็บเองด้วยธีมของเว็บ ส่วนในโหมด headless TomeCMS จะเลิกแสดงหน้าเหล่านั้น แล้วให้เว็บหรือแอปของคุณเองดึงเนื้อหาจาก Headless API ไปแสดงให้ผู้อ่าน หน้าแอดมินทำงานเหมือนกันทั้งสองโหมด
สิ่งที่โหมด headless ปิดไป
หัวข้อที่มีชื่อว่า “สิ่งที่โหมด headless ปิดไป”ในโหมด headless ที่อยู่เหล่านี้จะตอบ 404 พร้อมข้อความธรรมดา Not found.
| ที่อยู่ | สิ่งที่โหมด bundled แสดง |
|---|---|
/ |
เปลี่ยนเส้นทางไปที่หน้าแรกในภาษาเริ่มต้นของเว็บ |
/th และ /en |
หน้าแรกของแต่ละภาษา |
/th/blog/<slug> และ /en/blog/<slug> |
บทความ |
/th/<slug> และ /en/<slug> |
เพจ |
/blog/<slug> |
ที่อยู่บทความแบบเก่า ซึ่งส่งผู้อ่านต่อไปที่บทความ |
/sitemap.xml |
sitemap |
/rss.xml |
ฟีด RSS |
สิ่งที่ตั้งไว้ในเมนู “การเปลี่ยนเส้นทาง” ของหน้าแอดมินใช้ได้ในโหมด bundled เท่านั้น เพราะที่อยู่ของบทความและเพจข้างต้นเป็นตัวที่ส่งผู้อ่านต่อตามที่ตั้งไว้ ในโหมด headless ที่อยู่เก่าจึงตอบ 404 เหมือนที่อยู่อื่น และ API ก็ไม่ได้บอกว่าเนื้อหาย้ายไปที่ไหน เว็บของคุณต้องส่งผู้อ่านจากที่อยู่เก่าไปที่อยู่ใหม่เอง
สิ่งที่ใช้ได้ทั้งสองโหมด
หัวข้อที่มีชื่อว่า “สิ่งที่ใช้ได้ทั้งสองโหมด”ที่อยู่อื่นทั้งหมดตอบแบบเดียวกันไม่ว่าจะอยู่ในโหมดไหน
- หน้าแอดมินที่ path ที่คุณเลือกไว้ในตัวช่วยตั้งค่าครั้งแรก และการเข้าสู่ระบบ
/installและ/recovery/health/liveและ/health/ready/media/<id>ซึ่งส่งเบราว์เซอร์ต่อไปที่ไฟล์ใน bucket- Headless API ใต้
/api/v1/content/รวมถึงการพรีวิวฉบับร่าง /api/v1/stats/hitซึ่งใช้นับผู้อ่าน/robots.txtซึ่งมีกฎต่างกันในแต่ละโหมด
ในบรรดา route ของ API มีเพียง route นับผู้อ่านที่ทำงานต่างกันตามโหมด ในโหมด bundled จะรับการนับจากตัวเว็บเองเท่านั้น ส่วนในโหมด headless จะรับจาก origin ใดก็ได้ เว็บของคุณจึงส่งการนับมาได้ วิธีส่งอยู่ในหน้านับผู้อ่านจากเว็บแบบ headless
กฎใน robots.txt
หัวข้อที่มีชื่อว่า “กฎใน robots.txt”ในโหมด bundled /robots.txt ให้ crawler เข้ามาได้ กันไม่ให้เข้า /api/ และบอกที่อยู่ของ sitemap
User-agent: *Allow: /Disallow: /api/
User-agent: OAI-SearchBotAllow: /Disallow: /api/
Sitemap: https://cms.example.com/sitemap.xmlที่อยู่ของ sitemap มาจาก TOME_CMS_PUBLIC_URL
ในโหมด headless ไฟล์นี้ขอให้ crawler ทุกตัวอยู่นอก origin ของ CMS ทั้งหมด เพราะผู้อ่านจะเจอเนื้อหาของคุณบนเว็บของคุณเอง
User-agent: *Disallow: /
User-agent: OAI-SearchBotDisallow: /ในโหมดนี้ TomeCMS ไม่มี sitemap หรือฟีดให้ จึงต้องเผยแพร่สองอย่างนี้จากเว็บของคุณเอง
การสลับโหมด
หัวข้อที่มีชื่อว่า “การสลับโหมด”ตั้งโหมดไว้ใน .env.local ในโฟลเดอร์โค้ด ถ้าในไฟล์ยังไม่มีบรรทัดนี้ให้เพิ่มเข้าไป
TOME_CMS_FRONTEND_MODE='headless'แล้วรันสคริปต์ deploy อีกครั้ง
./scripts/deploy-vps.shคอนเทนเนอร์ของแอปรับค่าจาก .env.local ตอนที่ Compose สร้างคอนเทนเนอร์ ค่าใหม่จึงมีผลเมื่อสร้างคอนเทนเนอร์ขึ้นใหม่เท่านั้น สคริปต์ deploy ทำขั้นนี้ให้ทุกครั้งที่รัน และคงค่าอื่นในไฟล์ไว้ตามเดิม สคริปต์อ่าน TOME_CMS_FRONTEND_MODE จากไฟล์อย่างเดียว การ export ค่านี้ใน shell จึงไม่มีผลอะไร ค่าอื่น ๆ และวิธีที่สคริปต์จัดการค่าเหล่านั้นอยู่ในหน้าการตั้งค่า
ถ้าจะกลับไปใช้โหมด bundled ให้เปลี่ยนค่าเป็น bundled แล้วรันสคริปต์อีกครั้ง
การสลับโหมดเปลี่ยนแค่สิ่งที่ origin ตอบกลับ บทความ เพจ มีเดีย และการตั้งค่ายังอยู่ครบเหมือนเดิม ส่วนลิงก์ “ดูเว็บไซต์” ในหน้าแอดมินยังเปิด / ซึ่งตอบ 404 ในโหมด headless

