Dinamik Bağlantılar için özel bir alan adı ayarlama

page.link alt alan adı yerine kendi alan adınızı kullanarak Dinamik Bağlantılarınızın markalaması üzerinde daha fazla kontrole sahip olabilirsiniz. Özel alan adlarıyla aşağıdaki örneklere benzer Dinamik Bağlantılar oluşturabilirsiniz:

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'nin link-suffix önceki kısmına URL öneki adı verilir ve hem özel Dinamik Bağlantı alanınızı hem de bir yol önekini içerir. Dinamik Bağlantılar oluşturduğunuzda bir URL öneki sağlamanız gerekecektir.

Özel bir alan adı ayarlamak, Firebase projenizde Düzenleyici veya Sahip iznini gerektirir.

Dinamik Bağlantılar için web alanınızı kullanma

Dinamik Bağlantılarınız ve web sayfalarınız, Evrensel Bağlantılarınız ve Uygulama Bağlantılarınız için aynı etki alanını kullanabilirsiniz, ancak bunu yaparsanız Dinamik Bağlantı URL'lerinizin web URL'lerinizle çakışmamasına dikkat etmelisiniz. Dinamik Bağlantıları belirli bir URL önekini kullanacak şekilde yapılandırdığınızda, bu önekle başlayan tüm URL'ler Dinamik Bağlantılar olarak kabul edilir, dolayısıyla bu öneke sahip URL'leri sıradan barındırılan içeriğe işaret etmek için kullanamazsınız.

Örneğin, https://example.com/my-resource kaynağına (bir web sayfası, Evrensel Bağlantı veya Uygulama Bağlantısı) Dinamik Bağlantı oluşturmak istiyorsanız https://example.com/ kullanamazsınız. https://example.com/ Dinamik Bağlantılar URL'si öneki olarak kullanılır, çünkü bunu yapmak https://example.com/my-resource Dinamik Bağlantı olarak değerlendirilmesine neden olur. Bunun yerine, farklı bir etki alanına veya farklı bir yol önekine sahip bir URL öneki kullanmanız gerekir.

Bu nedenle, link parametresi tarafından belirtilen URL'ler Dinamik Bağlantı URL'si önekiyle ( https://example.com/ ) başladığından, aşağıdaki uzun biçimli Dinamik Bağlantılar (ve eşdeğer kısa bağlantılar) amaçlandığı gibi çalışmayacaktır:

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

Ancak URL önekleri link URL'leriyle çakışmadığı için aşağıdaki uzun biçimli Dinamik Bağlantılar (ve eşdeğer kısa bağlantılar) işe yarayabilir:

 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 konsolunda özel bir alan adı ayarlama

Genellikle Firebase konsolunda tamamen özel bir alan adı oluşturabilirsiniz. Böyle yaparak:

  1. Projeniz için Firebase Hosting'i kurmadıysanız Firebase konsolunun Barındırma sayfasını açın, Başlayın'ı tıklayın ve kurulum talimatlarını tıklayın. Şu anda belirtilen adımları tamamlamanız gerekmez.

  2. Firebase konsolunun Dinamik Bağlantılar sayfasını açın.

  3. Daha önce Dinamik Bağlantıları kullanmadıysanız Başlayın'ı tıklayın. Aksi takdirde, açılır menüden URL öneki ekle'yi tıklayın.

    Ardından, istendiğinde kullanmak istediğiniz etki alanı ve yol önekini belirterek kurulum sihirbazını tamamlayın.

  4. Yalnızca iOS : Xcode projenizin Info.plist dosyasında FirebaseDynamicLinksCustomDomains adında bir anahtar oluşturun ve bunu uygulamanızın Dynamic Links URL öneklerine ayarlayın. Örneğin:

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

Özel bir etki alanını manuel olarak ayarlama

Dinamik Bağlantılar için zaten ayarlanmış özel bir alan adınızın olması ve başka bir alan adı eklemek istemeniz veya bir Hosting sitesine zaten bağlı olan bir alan adını eklemek istemeniz gibi bazı durumlarda, özel alan adınızı manuel olarak ayarlamanız gerekir.

Böyle yaparak:

  1. Henüz yapmadıysanız alanınızı Firebase Hosting'e bağlayın .

    Alan adınızı Firebase Hosting ile ayarlamak, yerel proje dizininizde firebase.json yapılandırma dosyasını oluşturmayı içerir.

  2. Firebase CLI'nin en son sürümüne (v6.5.0 veya üzeri) güncelleyin .

  3. Projenizin firebase.json dosyasında Hosting sitenizi Dinamik Bağlantılar için yapılandırın. Projenizde birden fazla site varsa kullanmak istediğiniz etki alanına bağlı siteyi yapılandırdığınızdan emin olun.

    • appAssociation AUTO olarak ayarlayın. Bu ayarla Hosting, istendiğinde assetlinks.json ve apple-app-site-association dosyalarını dinamik olarak oluşturur.

    • dynamicLinks true olarak ayarlandığında yeniden yazma kurallarını ayarlayarak Dinamik Bağlantılar için kullanmak istediğiniz yol öneklerini belirtin. Bu yollara yönelik istekler Dinamik Bağlantılara proxy olarak aktarılır.

      URL'lere giden yolları yeniden yazan kuralların aksine, Dinamik Bağlantı yeniden yazma kuralları normal ifadeler içeremez.

      Siteniz için birden fazla yeniden yazma kuralınız varsa Hosting'in istekle eşleşen ilk yeniden yazma kuralını yürüttüğünü unutmayın.

    Örneğin:

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

    Yukarıdaki yapılandırmayla aşağıdaki örneklerdeki gibi URL öneklerine sahip Dinamik Bağlantılar oluşturabilirsiniz:

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

    Bu etki alanını yalnızca Dinamik Bağlantılar için kullanıyorsanız, yol öneki olmayan Dinamik Bağlantılar oluşturmak için /** kaynak yolunu kullanabilirsiniz:

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

    Yukarıdaki kuralla aşağıdaki örnekteki gibi Dinamik Bağlantılar oluşturabilirsiniz:

    https://your-domain/link-suffix

  4. Barındırma yapılandırma değişikliklerinizi dağıtın:

    firebase deploy --only hosting

    (isteğe bağlı) Dağıtılan firebase.json içeriğini Hosting REST API'yi kullanarak kontrol edebilirsiniz.

  5. Yalnızca iOS : Xcode projenizin Info.plist dosyasında FirebaseDynamicLinksCustomDomains adında bir anahtar oluşturun ve bunu uygulamanızın Dynamic Links URL öneklerine ayarlayın. Örneğin:

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

Dinamik Bağlantılar ve Barındırma için öncelik sırası

Dinamik Bağlantılar için, barındırma öncelik sırasına özellikle dikkat edin.

  • Dinamik Bağlantılar URL'si önekinizin daha yüksek öncelikli barındırma yapılandırmalarıyla çakışmadığından emin olun (örneğin, barındırılan statik içeriğin yeniden yazma işlemlerine göre her zaman önceliği vardır).
  • rewrites özelliği dahilinde Hosting yanıtı, istenen yolu yakalayan ilk source globu tarafından belirtilen kurala uyacaktır.

Örneğin, your-domain / source-path / link-suffix için bir Dinamik Bağlantı kurduysanız ancak your-domain / source-path /index.html de statik içerik varsa, statik içerik öncelikli olur. Son kullanıcı Dinamik Bağlantı yerine index.html görecektir. Benzer şekilde, your-domain / source-path / link-suffix statik içeriğiniz varsa, son kullanıcı Dinamik Bağlantı yerine statik içeriği görecektir.

Hem Dinamik Bağlantılar hem de Barındırma için aynı markayı kullanmak istiyorsanız Dinamik Bağlantılar URL'si önekiniz için aşağıdaki seçeneklerden birini değerlendirin:

  • source özelliğinizi bir yol önekiyle eşleşecek şekilde ayarlayın. Örneğin, example.com şeklinde özel bir alan adınız varsa yeniden yazma kuralınız şöyle olabilir:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Dinamik Bağlantılar için kullanılacak bir alt alan adı ayarlayın ve ardından source özelliğinizi bu alt alan adıyla eşleşecek şekilde ayarlayın. Örneğin, links.example.com alt alan adınız varsa yeniden yazma kuralınız şöyle olabilir:

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