透過使用您自己的網域而不是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 前綴。
因此,以下長格式動態連結(以及等效的短連結)將無法如預期運作,因為link
參數指定的 URL 以動態連結 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
URL 衝突:
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 控制台中完全設定自訂網域。為此:
如果您尚未為專案設定 Firebase 託管,請開啟 Firebase 控制台的託管頁面,按一下「開始」 ,然後按一下檢視設定說明。您此時不必完成指示的步驟。
開啟 Firebase 控制台的動態連結頁面。
如果您以前沒有使用過動態鏈接,請按一下“開始使用” 。否則,請從下拉式選單中點選新增 URL 前綴。
然後,完成設定精靈,在出現提示時指定要使用的網域和路徑前綴。
僅限 iOS :在 Xcode 專案的
Info.plist
檔案中,建立一個名為FirebaseDynamicLinksCustomDomains
的鍵,並將其設定為應用程式的動態連結 URL 前綴。例如:<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/link</string> <string>https://example.com/promos</string> </array>
手動設定自訂域
在某些情況下,例如當您已經為動態連結設定了自訂網域並想要新增另一個網域時,或者當您新增已連線至託管網站的網域時,您必須手動設定自訂網域。
為此:
如果您尚未將您的網域連接到 Firebase Hosting,請將其連接到 Firebase Hosting 。
使用 Firebase Hosting 設定域包括在本機專案目錄中建立設定檔
firebase.json
。更新至最新版本的 Firebase CLI (v6.5.0 或更高版本)。
在專案的
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
部署您的託管設定變更:
firebase deploy --only hosting
(可選)您可以使用Hosting REST API檢查已部署的
firebase.json
內容。僅限 iOS :在 Xcode 專案的
Info.plist
檔案中,建立一個名為FirebaseDynamicLinksCustomDomains
的鍵,並將其設定為應用程式的動態連結 URL 前綴。例如:<key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://example.com/promos</string> <string>https://example.com/links/share</string> </array>
動態連結和託管的優先順序
對於動態鏈接,請特別注意託管優先順序。
- 確保您的動態連結 URL 前綴不會與優先順序較高的託管配置衝突(例如,託管靜態內容始終優先於重寫)。
- 在
rewrites
屬性中,託管回應將遵循捕獲請求的路徑的第一個source
glob指定的規則。
例如,如果您為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 } ]