คุณสามารถควบคุมการสร้างแบรนด์ของลิงก์แบบไดนามิกได้ดียิ่งขึ้นโดยใช้โดเมนของคุณเองแทนโดเมนย่อยของ 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 และมีทั้งโดเมน Dynamic Link ที่กำหนดเองและคำนำหน้าพาธ คุณจะต้องระบุคำนำหน้า URL เมื่อคุณสร้างลิงก์แบบไดนามิก
การตั้งค่าโดเมนที่กำหนดเองต้องได้รับอนุญาตจากผู้แก้ไขหรือเจ้าของในโปรเจ็กต์ Firebase
การใช้โดเมนเว็บของคุณสำหรับ Dynamic Links
คุณสามารถใช้โดเมนเดียวกันสำหรับลิงก์แบบไดนามิกและหน้าเว็บ ลิงก์สากล และลิงก์แอปได้ แต่หากเป็นเช่นนั้น คุณต้องดูแลให้ URL ลิงก์แบบไดนามิกของคุณไม่ขัดแย้งกับ URL ของเว็บ เมื่อคุณกำหนดค่าลิงก์แบบไดนามิกให้ใช้คำนำหน้า URL เฉพาะ URL ทั้งหมดที่ขึ้นต้นด้วยคำนำหน้านั้นจะถือเป็นลิงก์แบบไดนามิก ดังนั้นคุณจึงไม่สามารถใช้ URL ที่มีคำนำหน้าดังกล่าวเพื่อชี้ไปยังเนื้อหาที่โฮสต์ทั่วไปได้
ตัวอย่างเช่น หากคุณต้องการสร้างลิงก์แบบไดนามิกไปยังทรัพยากร https://example.com/my-resource
(หน้าเว็บ ลิงก์สากล หรือลิงก์แอป) คุณจะใช้ https://example.com/
ไม่ได้ 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 Hosting หากคุณยังไม่ได้ดำเนินการ
การตั้งค่าโดเมนของคุณด้วยโฮสติ้งของ Firebase รวมถึงการสร้างไฟล์การกำหนดค่า
firebase.json
ในไดเรกทอรีโปรเจ็กต์ในเครื่องของคุณอัปเดตเป็น Firebase CLI เวอร์ชันล่าสุด (v6.5.0 หรือใหม่กว่า)
กำหนดค่าไซต์โฮสติ้งสำหรับลิงก์แบบไดนามิกในไฟล์
firebase.json
ของโปรเจ็กต์ หากโครงการของคุณมีหลายไซต์ อย่าลืมกำหนดค่าไซต์ที่เชื่อมต่อกับโดเมนที่คุณต้องการใช้ตั้งค่า
appAssociation
เป็นAUTO
ด้วยการตั้งค่านี้ โฮสติ้งจะสร้างassetlinks.json
และapple-app-site-association
แบบไดนามิกเมื่อมีการร้องขอระบุคำนำหน้าพาธที่คุณต้องการใช้สำหรับ Dynamic Links โดยการตั้งค่ากฎการเขียนใหม่โดยตั้งค่า
dynamicLinks
true
คำขอไปยังเส้นทางเหล่านี้จะได้รับการพร็อกซีไปยังลิงก์แบบไดนามิกไม่เหมือนกับกฎที่เขียนเส้นทางไปยัง URL ใหม่ กฎการเขียนซ้ำ Dynamic Link ไม่สามารถมีนิพจน์ทั่วไปได้
หากคุณมีกฎการเขียนซ้ำหลายกฎสำหรับเว็บไซต์ของคุณ โปรดทราบว่า Hosting จะดำเนินการกฎการเขียนใหม่ครั้งแรกที่ตรงกับคำขอ
ตัวอย่างเช่น:
"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>
ลำดับความสำคัญสำหรับ Dynamic Links และ Hosting
สำหรับลิงก์แบบไดนามิก โปรดระวังเป็นพิเศษเกี่ยวกับ ลำดับความสำคัญของโฮสต์
- ตรวจสอบให้แน่ใจว่าคำนำหน้า URL ลิงก์แบบไดนามิกของคุณไม่ขัดแย้งกับการกำหนดค่าการโฮสต์ที่มีลำดับความสำคัญสูงกว่า (เช่น เนื้อหาคงที่ที่โฮสต์จะมีลำดับความสำคัญมากกว่าการเขียนใหม่เสมอ)
- ภายในแอตทริบิวต์
rewrites
การตอบสนองของ Hosting จะเป็นไปตามกฎที่ระบุโดยsource
glob แรกที่รวบรวมเส้นทางที่ร้องขอ
ตัวอย่างเช่น หากคุณตั้งค่าลิงก์แบบไดนามิกสำหรับ your-domain / source-path / link-suffix
แต่คุณยังมีเนื้อหาคงที่ที่ your-domain / source-path /index.html
เนื้อหาคงที่จะมีความสำคัญเหนือกว่า ผู้ใช้ปลายทางจะเห็น index.html
มากกว่า Dynamic Link ในทำนองเดียวกัน หากคุณมีเนื้อหาสแตติกที่ 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 } ]