Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. 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 และมีทั้งโดเมน 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 กฎการเขียน links.example.com ของคุณอาจเป็น:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]