Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. 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
    } ]