ตั้งค่าโดเมนที่กำหนดเองสำหรับลิงก์แบบไดนามิก

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

การใช้โดเมนเว็บสำหรับลิงก์แบบไดนามิก

คุณใช้โดเมนเดียวกันสำหรับลิงก์แบบไดนามิกและหน้าเว็บ Universal Link และลิงก์แอปได้ แต่หากใช้ คุณต้องระวังว่า URL ของลิงก์แบบไดนามิกจะไม่ขัดแย้งกับ URL ของเว็บ เมื่อกำหนดค่าลิงก์แบบไดนามิกให้ใช้คำนำหน้า URL ที่เฉพาะเจาะจง ระบบจะพิจารณา URL ทั้งหมดที่ขึ้นต้นด้วยคำนำหน้านั้นว่าเป็นลิงก์แบบไดนามิก คุณจึงไม่สามารถใช้ URL ที่มีคำนำหน้าเพื่อชี้ไปยังเนื้อหาที่โฮสต์ทั่วไปได้

เช่น หากคุณต้องการสร้างลิงก์แบบไดนามิกไปยังทรัพยากร https://example.com/my-resource (หน้าเว็บ ลิงก์สากล หรือ App Link) คุณใช้ 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 แบบไดนามิกเมื่อมีการขอ

    • ระบุคำนำหน้าเส้นทางที่ต้องการใช้สำหรับลิงก์แบบไดนามิกโดยตั้งค่ากฎการเขียนใหม่โดยตั้งค่า 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>
    

ลำดับความสำคัญของลิงก์แบบไดนามิกและโฮสติ้ง

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

  • ตรวจสอบว่าคำนำหน้า 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
    } ]