Catch up on highlights from Firebase at Google I/O 2023. Learn more

ตั้งค่าโดเมนที่กำหนดเองสำหรับ Dynamic Links

คุณสามารถควบคุมการสร้างแบรนด์ของลิงก์แบบไดนามิกได้มากขึ้นโดยใช้โดเมนของคุณเองแทนโดเมนย่อยของ 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 ในการทำเช่นนั้น:

  1. หากคุณยังไม่ได้ตั้งค่าโฮสติ้ง Firebase สำหรับโปรเจ็กต์ของคุณ ให้เปิด หน้าโฮสติ้ง ของคอนโซล Firebase คลิก เริ่มต้นใช้งาน แล้วคลิกดูคำแนะนำในการตั้งค่า คุณไม่จำเป็นต้องทำตามขั้นตอนที่ระบุในขณะนี้

  2. เปิด หน้าลิงก์แบบไดนามิก ของคอนโซล Firebase

  3. หากคุณยังไม่เคยใช้ลิงก์แบบไดนามิกมาก่อน ให้คลิก เริ่มต้นใช้งาน มิฉะนั้น ให้คลิก เพิ่มคำนำหน้า URL จากเมนูแบบเลื่อนลง

    จากนั้น ทำตามวิซาร์ดการตั้งค่าให้สมบูรณ์ โดยระบุคำนำหน้าโดเมนและพาธที่คุณต้องการใช้เมื่อได้รับพร้อมท์

  4. iOS เท่านั้น : ในไฟล์ Info.plist ของโปรเจ็กต์ Xcode ให้สร้างคีย์ชื่อ FirebaseDynamicLinksCustomDomains และตั้งค่าเป็นคำนำหน้า URL ลิงก์แบบไดนามิกของแอป ตัวอย่างเช่น:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

ตั้งค่าโดเมนแบบกำหนดเองด้วยตนเอง

ในบางสถานการณ์ เช่น เมื่อคุณตั้งค่าโดเมนแบบกำหนดเองสำหรับลิงก์แบบไดนามิกแล้ว และต้องการเพิ่มโดเมนอื่น หรือเมื่อคุณเพิ่มโดเมนที่เชื่อมต่อกับไซต์โฮสติ้งแล้ว คุณต้องตั้งค่าโดเมนแบบกำหนดเองด้วยตนเอง

ในการทำเช่นนั้น:

  1. เชื่อมต่อโดเมนของคุณกับ Firebase Hosting หากคุณยังไม่ได้ดำเนินการ

    การตั้งค่าโดเมนของคุณด้วย Firebase Hosting รวมถึงการสร้างไฟล์การกำหนดค่า firebase.json ในไดเร็กทอรีโปรเจ็กต์ในเครื่องของคุณ

  2. อัปเดต Firebase CLI เป็นเวอร์ชันล่าสุด (v6.5.0 หรือใหม่กว่า)

  3. กำหนดค่าไซต์โฮสติ้งสำหรับลิงก์แบบไดนามิกในไฟล์ 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

  4. ปรับใช้การเปลี่ยนแปลงการกำหนดค่าโฮสติ้งของคุณ:

    firebase deploy --only hosting

    (ไม่บังคับ) คุณสามารถตรวจสอบเนื้อหา firebase.json ที่ปรับใช้ได้โดยใช้ Hosting REST API

  5. iOS เท่านั้น : ในไฟล์ 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 การตอบสนองของโฮสติ้งจะเป็นไปตามกฎที่ระบุโดย 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
    } ]