คุณควบคุมการสร้างแบรนด์ของลิงก์แบบไดนามิกได้มากขึ้นโดยใช้โดเมนของคุณเองแทนโดเมนย่อย page.link
เมื่อใช้โดเมนที่กำหนดเอง
คุณสามารถสร้างลิงก์แบบไดนามิกได้ดังตัวอย่างต่อไปนี้
https://example.com/link-suffix https://example.com/links/promos/link-suffix https://links.example.com/link-suffix https://ex.amp.le/link-suffix
ส่วนของ URL ที่อยู่ก่อน link-suffix เรียกว่าคำนำหน้า URL และมีทั้งโดเมนลิงก์แบบไดนามิกที่กำหนดเองและคำนำหน้าเส้นทาง คุณจะต้องระบุคำนำหน้า URL เมื่อสร้างลิงก์แบบไดนามิก
ในการตั้งค่าโดเมนที่กำหนดเอง คุณจะต้องมีสิทธิ์ผู้แก้ไขหรือเจ้าของในโปรเจ็กต์ Firebase
การใช้โดเมนเว็บสำหรับลิงก์แบบไดนามิก
คุณใช้โดเมนเดียวกันสำหรับลิงก์แบบไดนามิกและหน้าเว็บ Universal Link และลิงก์แอปได้ แต่หากใช้ คุณต้องระวังว่า URL ของลิงก์แบบไดนามิกจะไม่ขัดแย้งกับ URL ของเว็บ เมื่อกำหนดค่าลิงก์แบบไดนามิกให้ใช้คำนำหน้า URL ที่เฉพาะเจาะจง ระบบจะพิจารณา URL ทั้งหมดที่ขึ้นต้นด้วยคำนำหน้านั้นว่าเป็นลิงก์แบบไดนามิก คุณจึงไม่สามารถใช้ URL ที่มีคำนำหน้าเพื่อชี้ไปยังเนื้อหาที่โฮสต์ทั่วไปได้
เช่น หากคุณต้องการสร้างลิงก์แบบไดนามิกไปยังทรัพยากร https://example.com/my-resource
(หน้าเว็บ ลิงก์สากล หรือ App Link) คุณใช้ https://example.com/
เป็นคำนำหน้า URL ของลิงก์แบบไดนามิกไม่ได้ เนื่องจากจะทำให้ระบบถือว่า https://example.com/my-resource
เป็นลิงก์แบบไดนามิก
คุณต้องใช้คำนำหน้า URL กับโดเมนอื่นหรือคำนำหน้าเส้นทางอื่นแทน
ดังนั้นลิงก์แบบไดนามิกแบบยาวต่อไปนี้ (และลิงก์แบบสั้นที่เทียบเท่า) จะไม่ทำงานตามที่ต้องการเนื่องจาก URL ที่ระบุโดยพารามิเตอร์ link
เริ่มต้นด้วยคำนำหน้า URL ของลิงก์แบบไดนามิก https://example.com/
https://example.com/?link=https://example.com/my-resource https://example.com/?link=https://example.com/resources/my-resource
แต่ลิงก์แบบไดนามิกแบบยาวต่อไปนี้ (และลิงก์แบบสั้นที่เทียบเท่า) ใช้งานได้
เนื่องจากคำนำหน้า URL ไม่ขัดแย้งกับ URL ของ link
https://link.example.com/?link=https://example.com/my-resource https://example.com/links/?link=https://example.com/my-resource https://ex.amp.le/?link=https://example.com/my-resource
ตั้งค่าโดเมนที่กำหนดเองในคอนโซล Firebase
โดยปกติคุณจะตั้งค่าโดเมนที่กำหนดเองได้ทั้งหมดในคอนโซล Firebase โดยทำดังนี้
หากยังไม่ได้ตั้งค่าโฮสติ้งของ Firebase สำหรับโปรเจ็กต์ ให้เปิดหน้าโฮสติ้งของคอนโซล Firebase คลิกเริ่มต้นใช้งาน แล้วคลิกวิธีการตั้งค่า คุณยังไม่ต้องทำตามขั้นตอนที่ระบุในขณะนี้
เปิดหน้าลิงก์แบบไดนามิกของคอนโซล Firebase
หากไม่เคยใช้ลิงก์แบบไดนามิกมาก่อน ให้คลิกเริ่มต้นใช้งาน หรือคลิกเพิ่มคำนำหน้า URL จากเมนูแบบเลื่อนลง
จากนั้นทำตามขั้นตอนในวิซาร์ดการตั้งค่า โดยระบุคำนำหน้าโดเมนและเส้นทางที่คุณต้องการใช้เมื่อได้รับข้อความแจ้ง
iOS เท่านั้น: ในไฟล์
Info.plist
ของโปรเจ็กต์ Xcode ให้สร้างคีย์ชื่อFirebaseDynamicLinksCustomDomains
แล้วตั้งค่าเป็นคำนำหน้า URL ลิงก์แบบไดนามิกของแอป ตัวอย่างเช่น<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/link</string> <string>https://example.com/promos</string> </array>
ตั้งค่าโดเมนที่กำหนดเองด้วยตนเอง
ในบางสถานการณ์ เช่น เมื่อคุณตั้งค่าโดเมนที่กำหนดเองสำหรับลิงก์แบบไดนามิกไว้แล้วและต้องการเพิ่มโดเมนใหม่ หรือเมื่อคุณเพิ่มโดเมนที่เชื่อมต่อกับเว็บไซต์โฮสติ้งแล้ว คุณจะต้องตั้งค่าโดเมนที่กำหนดเองด้วยตนเอง
วิธีการมีดังนี้
เชื่อมต่อโดเมนกับโฮสติ้งของ Firebase หากยังไม่ได้ทำ
การตั้งค่าโดเมนด้วยโฮสติ้งของ Firebase รวมถึงการสร้างไฟล์การกำหนดค่า
firebase.json
ในไดเรกทอรีโปรเจ็กต์ในเครื่องอัปเดต Firebase CLI เป็นเวอร์ชันล่าสุด (v6.5.0 ขึ้นไป)
กำหนดค่าเว็บไซต์โฮสติ้งสำหรับลิงก์แบบไดนามิกในไฟล์
firebase.json
ของโปรเจ็กต์ หากโปรเจ็กต์มีหลายเว็บไซต์ อย่าลืมกำหนดค่าเว็บไซต์ที่เชื่อมต่อกับโดเมนที่ต้องการใช้ตั้งค่า
appAssociation
เป็นAUTO
เมื่อใช้การตั้งค่านี้ โฮสติ้งจะสร้างไฟล์assetlinks.json
และapple-app-site-association
แบบไดนามิกเมื่อมีการขอระบุคำนำหน้าเส้นทางที่ต้องการใช้สำหรับลิงก์แบบไดนามิกโดยตั้งค่ากฎการเขียนใหม่โดยตั้งค่า
dynamicLinks
เป็นtrue
คำขอที่ส่งไปยังเส้นทางเหล่านี้ จะส่งไปที่ลิงก์แบบไดนามิกกฎการเขียนลิงก์แบบไดนามิกใหม่ต้องไม่มีนิพจน์ทั่วไป ซึ่งต่างจากกฎที่เขียนเส้นทางไปยัง URL ใหม่
หากคุณมีกฎการเขียนใหม่หลายกฎสำหรับเว็บไซต์ โปรดทราบว่าโฮสติ้งจะใช้กฎการเขียนใหม่รายการแรกที่ตรงกับคำขอดังกล่าว
ตัวอย่างเช่น
"hosting": { // ... "appAssociation": "AUTO", "rewrites": [ { "source": "/promos/**", "dynamicLinks": true }, { "source": "/links/share/**", "dynamicLinks": true } ] }
การกําหนดค่าข้างต้นช่วยให้คุณสร้างลิงก์แบบไดนามิกที่มีคํานําหน้า URL ได้ดังตัวอย่างต่อไปนี้
https://your-domain/promos/link-suffix https://your-domain/links/share/link-suffix
หากใช้โดเมนนี้สำหรับลิงก์แบบไดนามิกเท่านั้น คุณสามารถใช้เส้นทางต้นทางของ
/**
เพื่อสร้างลิงก์แบบไดนามิกที่ไม่มีคำนำหน้าเส้นทางได้ดังนี้{ "source": "/**", "dynamicLinks": true }
ด้วยกฎข้างต้น คุณสามารถสร้างลิงก์แบบไดนามิกได้ดังตัวอย่างต่อไปนี้
https://your-domain/link-suffix
ทำให้การเปลี่ยนแปลงการกำหนดค่าโฮสติ้งใช้งานได้:
firebase deploy --only hosting
(ไม่บังคับ) คุณตรวจสอบเนื้อหา
firebase.json
ที่ทำให้ใช้งานได้แล้วได้โดยใช้ Hosting REST APIiOS เท่านั้น: ในไฟล์
Info.plist
ของโปรเจ็กต์ Xcode ให้สร้างคีย์ชื่อFirebaseDynamicLinksCustomDomains
แล้วตั้งค่าเป็นคำนำหน้า URL ลิงก์แบบไดนามิกของแอป ตัวอย่างเช่น<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/promos</string> <string>https://example.com/links/share</string> </array>
ลำดับความสำคัญของลิงก์แบบไดนามิกและโฮสติ้ง
สำหรับลิงก์แบบไดนามิก โปรดระวังลำดับความสำคัญของการโฮสต์เป็นพิเศษ
- ตรวจสอบว่าคำนำหน้า URL ของลิงก์แบบไดนามิกไม่ขัดแย้งกับการกำหนดค่าโฮสติ้งที่มีลำดับความสำคัญสูงกว่า (เช่น เนื้อหาแบบคงที่ที่โฮสต์จะมีความสำคัญมากกว่าการเขียนใหม่เสมอ)
- ภายในแอตทริบิวต์
rewrites
การตอบกลับของโฮสติ้งจะทำตามกฎที่ระบุโดย glob แรกของsource
ที่บันทึกเส้นทางที่ขอ
เช่น หากคุณตั้งค่าลิงก์แบบไดนามิกสำหรับ your-domain/source-path/link-suffix
แต่คุณยังมีเนื้อหาคงที่ที่ your-domain/source-path/index.html
ด้วย เนื้อหาแบบคงที่จะมีความสำคัญเหนือกว่า ผู้ใช้ปลายทางจะเห็น index.html
แทนลิงก์แบบไดนามิก ในทำนองเดียวกัน หากคุณมีเนื้อหาแบบคงที่ที่ your-domain/source-path/link-suffix
ผู้ใช้ปลายทางจะเห็นเนื้อหาแบบคงที่แทนลิงก์แบบไดนามิก
หากต้องการใช้แบรนด์เดียวกันสำหรับทั้งลิงก์แบบไดนามิกและโฮสติ้ง ให้ลองใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้สำหรับคำนำหน้า URL ลิงก์แบบไดนามิก
ตั้งค่าแอตทริบิวต์
source
ให้ตรงกับคำนำหน้าเส้นทาง เช่น หากคุณมีโดเมนที่กำหนดเองของexample.com
กฎการเขียนใหม่อาจเป็นสิ่งต่อไปนี้// Domain is example.com "rewrites": [ { "source": "/links/**", // Dynamic Links start with "https://example.com/links/" "dynamicLinks": true } ]
ตั้งค่าโดเมนย่อยเพื่อใช้กับลิงก์แบบไดนามิก จากนั้นตั้งค่าแอตทริบิวต์
source
ให้ตรงกับโดเมนย่อยดังกล่าว เช่น หากคุณมีโดเมนย่อยของlinks.example.com
กฎการเขียนใหม่อาจเป็นดังนี้// Domain is links.example.com "rewrites": [ { "source": "/**", // Dynamic Links start with "https://links.example.com/" "dynamicLinks": true } ]