Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

ตั้งค่าโดเมนที่กำหนดเองสำหรับ 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 และมีทั้งโดเมน 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 ในการทำเช่นนั้น:

  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 หากคุณยังไม่ได้ดำเนินการ

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

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

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

  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

สำหรับ Dynamic Links โปรดระวังเป็นพิเศษเกี่ยวกับ ลำดับความสำคัญของโฮสต์

  • ตรวจสอบให้แน่ใจว่าคำนำหน้า 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 ผู้ใช้ปลายทางจะเห็นเนื้อหาสแตติกมากกว่า Dynamic Link

หากคุณต้องการใช้แบรนด์เดียวกันสำหรับทั้งลิงก์แบบไดนามิกและโฮสติ้ง ให้พิจารณาตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้สำหรับคำนำหน้า 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
    } ]