為動態鏈接設置自定義域

你可以有超過您的動態鏈接更大的控制權'用你自己的域名,而不是品牌塑造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 與您的 Web URL 衝突。當您將動態鏈接配置為使用特定 URL 前綴時,以該前綴開頭的所有 URL 都被視為動態鏈接,因此您不能使用具有該前綴的 URL 來指向普通的託管內容。

例如,如果你想創建一個動態鏈接到資源https://example.com/my-resource (網頁,通用鏈接,或應用鏈接),你不能使用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前綴不與衝突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. 如果您還沒有建立火力地堡主機為您的項目中,打開主機頁面的火力地堡控制台,點擊開始使用,並通過點擊安裝說明。您此時不必完成指示的步驟。

  2. 打開動態鏈接頁面的火力地堡控制台。

  3. 如果你以前沒有使用動態鏈接,點擊開始使用。否則,請點擊添加網址前綴從下拉菜單中。

    然後,完成設置嚮導,在出現提示時指定要使用的域和路徑前綴。

  4. 僅適用於iOS:在您的Xcode項目的Info.plist文件,創建一個名為關鍵FirebaseDynamicLinksCustomDomains並將其設置為你的應用程序的動態鏈接網址的前綴。例如:

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

手動設置自定義域

在某些情況下,例如當您已經為動態鏈接設置了自定義域並想要添加另一個域時,或者當您添加已連接到託管站點的域時,您必須手動設置自定義域。

這樣做:

  1. 連接您的域名託管火力地堡如果您還沒有這樣做。

    與火力地堡主機設置您的域名包括創建配置文件firebase.json在您的本地項目目錄。

  2. 更新到火力地堡CLI的最新版本(V6.5.0或更高版本)。

  3. 配置動態鏈接你的網站託管在項目的firebase.json文件。如果您的項目有多個站點,請務必配置連接到您要使用的域的站點。

    • 設置appAssociationAUTO 。使用此設置,動態主機產生assetlinks.jsonapple-app-site-association請求時,他們的文件。

    • 指定要通過設置重寫規則使用動態鏈接路徑前綴dynamicLinks設置為true 。對這些路徑的請求會被代理到動態鏈接。

      與重寫 URL 路徑的規則不同,動態鏈接重寫規則不能包含正則表達式。

      如果您的站點有多個重寫規則,請注意 Hosting 會執行與請求匹配的第一個重寫規則。

    例如:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    通過上述配置,您可以創建動態鏈接與網址的前綴,如下面的例子:

    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使用內容託管REST API

  5. 僅適用於iOS:在您的Xcode項目的Info.plist文件,創建一個名為關鍵FirebaseDynamicLinksCustomDomains並將其設置為你的應用程序的動態鏈接網址的前綴。例如:

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

動態鏈接和託管的優先順序

對於動態鏈接,特別了解的託管優先順序

  • 確保您的動態鏈接 URL 前綴不與更高優先級的託管配置衝突(例如,託管的靜態內容始終優先於重寫)。
  • rewrites屬性,託管響應將遵守規則指定第一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
    } ]