คุณสามารถควบคุมการสร้างแบรนด์ของลิงก์แบบไดนามิกได้มากขึ้นโดยใช้โดเมนของคุณเองแทนโดเมนย่อยของ 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 ของคุณ
การใช้โดเมนเว็บของคุณสำหรับลิงก์แบบไดนามิก
คุณสามารถใช้โดเมนเดียวกันสำหรับไดนามิกลิงก์และหน้าเว็บของคุณ ยูนิเวอร์แซลลิงก์ และแอพลิงก์ แต่ถ้าคุณทำเช่นนั้น คุณต้องดูแลให้ URL ลิงก์ไดนามิกของคุณไม่ขัดแย้งกับ URL เว็บของคุณ เมื่อคุณกำหนดค่าลิงก์แบบไดนามิกให้ใช้คำนำหน้า URL เฉพาะ URL ทั้งหมดที่ขึ้นต้นด้วยคำนำหน้านั้นจะถือว่าเป็นลิงก์แบบไดนามิก ดังนั้นคุณจึงไม่สามารถใช้ URL ที่มีคำนำหน้านั้นเพื่อชี้ไปยังเนื้อหาที่โฮสต์ทั่วไปได้
ตัวอย่างเช่น หากคุณต้องการสร้างลิงก์แบบไดนามิกไปยังทรัพยากร https://example.com/my-resource
(หน้าเว็บ, Universal Link หรือ App Link) คุณจะใช้ 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 Hosting รวมถึงการสร้างไฟล์การกำหนดค่า
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>
ลำดับความสำคัญสำหรับ Dynamic Links และ Hosting
สำหรับไดนามิกลิงก์ ให้ระวัง ลำดับความสำคัญของการโฮสต์ เป็นพิเศษ
- ตรวจสอบให้แน่ใจว่าคำนำหน้า URL ลิงก์แบบไดนามิกของคุณไม่ขัดแย้งกับการกำหนดค่าการโฮสต์ที่มีลำดับความสำคัญสูงกว่า (เช่น เนื้อหาคงที่ที่โฮสต์จะมีลำดับความสำคัญมากกว่าการเขียนซ้ำเสมอ)
- ภายในแอตทริบิวต์
rewrites
การตอบสนองของโฮสติ้งจะเป็นไปตามกฎที่ระบุโดย globsource
แรกที่บันทึกเส้นทางที่ร้องขอ
ตัวอย่างเช่น หากคุณตั้งค่าลิงก์แบบไดนามิกสำหรับ 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 } ]