Skonfiguruj domenę niestandardową dla łączy dynamicznych

Możesz mieć większą kontrolę nad marką swoich linków dynamicznych, używając własnej domeny zamiast subdomeny page.link . Dzięki domenom niestandardowym możesz tworzyć linki dynamiczne, jak w poniższych przykładach:

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

Część adresu URL znajdująca się przed link-suffix nazywana jest prefiksem adresu URL i zawiera zarówno niestandardową domenę łącza dynamicznego, jak i prefiks ścieżki. Podczas tworzenia linków dynamicznych konieczne będzie podanie prefiksu adresu URL.

Skonfigurowanie domeny niestandardowej wymaga uprawnień redaktora lub właściciela w projekcie Firebase.

Korzystanie z domeny internetowej dla linków dynamicznych

Możesz używać tej samej domeny dla łączy dynamicznych oraz stron internetowych, łączy uniwersalnych i łączy aplikacji, ale jeśli to zrobisz, musisz zadbać o to, aby adresy URL łączy dynamicznych nie kolidowały z adresami URL stron internetowych. Jeśli skonfigurujesz łącza dynamiczne tak, aby korzystały z określonego przedrostka adresu URL, wszystkie adresy URL rozpoczynające się od tego przedrostka będą traktowane jako łącza dynamiczne, zatem nie będzie można używać adresów URL z tym przedrostkiem do wskazywania zwykłej hostowanej zawartości.

Na przykład, jeśli chcesz utworzyć link dynamiczny do zasobu https://example.com/my-resource (strona internetowa, link uniwersalny lub link do aplikacji), nie możesz użyć https://example.com/ jako prefiks adresu URL linków dynamicznych, ponieważ spowodowałoby to, że https://example.com/my-resource byłby traktowany jako link dynamiczny. Zamiast tego należy użyć prefiksu adresu URL z inną domeną lub innym prefiksem ścieżki.

Zatem następujące długie linki dynamiczne (i odpowiadające im krótkie linki) nie będą działać zgodnie z oczekiwaniami, ponieważ adresy URL określone w parametrze link zaczynają się od prefiksu adresu URL łącza dynamicznego, https://example.com/ :

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

Jednak następujące długie linki dynamiczne (i równoważne krótkie linki) mogą działać, ponieważ przedrostki adresów URL nie kolidują z adresami 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

Skonfiguruj domenę niestandardową w konsoli Firebase

Zwykle możesz całkowicie skonfigurować domenę niestandardową w konsoli Firebase. Aby to zrobić:

  1. Jeśli nie skonfigurowałeś Hostingu Firebase dla swojego projektu, otwórz stronę Hosting w konsoli Firebase, kliknij Rozpocznij i zapoznaj się z instrukcjami konfiguracji. W tym momencie nie musisz wykonywać wskazanych kroków.

  2. Otwórz stronę Linki dynamiczne w konsoli Firebase.

  3. Jeśli nie korzystałeś wcześniej z łączy dynamicznych, kliknij przycisk Rozpocznij . W przeciwnym razie kliknij opcję Dodaj prefiks adresu URL z menu rozwijanego.

    Następnie ukończ pracę kreatora instalacji, określając prefiks domeny i ścieżki, którego chcesz użyć, gdy zostaniesz o to poproszony.

  4. Tylko iOS : w pliku Info.plist projektu Xcode utwórz klucz o nazwie FirebaseDynamicLinksCustomDomains i ustaw go na prefiksy adresów URL łączy dynamicznych aplikacji. Na przykład:

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

Skonfiguruj domenę niestandardową ręcznie

W niektórych sytuacjach, na przykład gdy masz już skonfigurowaną domenę niestandardową dla łączy dynamicznych i chcesz dodać kolejną domenę lub gdy dodajesz domenę już połączoną z witryną hostingową, musisz ręcznie skonfigurować domenę niestandardową.

Aby to zrobić:

  1. Połącz swoją domenę z Hostingiem Firebase, jeśli jeszcze tego nie zrobiłeś.

    Konfigurowanie domeny za pomocą Firebase Hosting obejmuje utworzenie pliku konfiguracyjnego firebase.json w lokalnym katalogu projektu.

  2. Zaktualizuj do najnowszej wersji Firebase CLI (wersja 6.5.0 lub nowsza).

  3. Skonfiguruj swoją witrynę hostingową pod kątem łączy dynamicznych w pliku firebase.json swojego projektu. Jeśli Twój projekt ma wiele witryn, pamiętaj o skonfigurowaniu witryny połączonej z domeną, której chcesz używać.

    • Ustaw appAssociation na AUTO . Przy tym ustawieniu Hosting dynamicznie generuje pliki assetlinks.json i pliki apple-app-site-association na żądanie.

    • Określ przedrostki ścieżek, których chcesz używać dla łączy dynamicznych, ustawiając reguły przepisywania z dynamicLinks ustawioną na true . Żądania kierowane do tych ścieżek są przekazywane do łączy dynamicznych.

      W przeciwieństwie do reguł przepisując ścieżki do adresów URL, reguły przepisywania łącza dynamicznego nie mogą zawierać wyrażeń regularnych.

      Jeśli masz wiele reguł przepisywania dla swojej witryny, pamiętaj, że Hosting wykonuje pierwszą regułę przepisywania, która pasuje do żądania.

    Na przykład:

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

    Dzięki powyższej konfiguracji możesz tworzyć linki dynamiczne z prefiksami adresów URL, jak w poniższych przykładach:

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    Jeśli używasz tej domeny tylko dla łączy dynamicznych, możesz użyć ścieżki źródłowej /** aby utworzyć linki dynamiczne bez przedrostka ścieżki:

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    Dzięki powyższej regule możesz tworzyć linki dynamiczne, jak w poniższym przykładzie:

    https://your-domain/link-suffix

  4. Wdróż zmiany w konfiguracji hostingu:

    firebase deploy --only hosting

    (opcjonalnie) Możesz sprawdzić wdrożoną zawartość firebase.json za pomocą interfejsu API REST Hostingu .

  5. Tylko iOS : w pliku Info.plist projektu Xcode utwórz klucz o nazwie FirebaseDynamicLinksCustomDomains i ustaw go na prefiksy adresów URL łączy dynamicznych aplikacji. Na przykład:

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

Kolejność priorytetów dla linków dynamicznych i hostingu

W przypadku linków dynamicznych należy szczególnie zwrócić uwagę na kolejność priorytetów hostingu .

  • Upewnij się, że prefiks adresu URL łączy dynamicznych nie koliduje z konfiguracjami hostingu o wyższym priorytecie (na przykład hostowana zawartość statyczna zawsze ma pierwszeństwo przed ponownym zapisaniem).
  • W ramach atrybutu rewrites odpowiedź Hostingu będzie zgodna z regułą określoną przez pierwszy glob source , który przechwytuje żądaną ścieżkę .

Na przykład, jeśli skonfigurujesz łącze dynamiczne dla your-domain / source-path / link-suffix ale masz także zawartość statyczną w your-domain / source-path /index.html , treść statyczna ma pierwszeństwo. Użytkownik końcowy zobaczy index.html zamiast łącza dynamicznego. Podobnie, jeśli masz statyczną treść w your-domain / source-path / link-suffix , użytkownik końcowy zobaczy treść statyczną, a nie łącze dynamiczne.

Jeśli chcesz używać tej samej marki zarówno w przypadku Linków Dynamicznych, jak i Hostingu, rozważ jedną z następujących opcji prefiksu adresu URL Linków Dynamicznych:

  • Ustaw atrybut source tak, aby pasował do prefiksu ścieżki. Na przykład, jeśli masz niestandardową domenę example.com , Twoja reguła przepisywania może wyglądać następująco:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Skonfiguruj subdomenę do użycia dla łączy dynamicznych, a następnie ustaw atrybut source tak, aby pasował do tej subdomeny. Na przykład, jeśli masz links.example.com , Twoja reguła przepisywania może wyglądać następująco:

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