동적 링크의 커스텀 도메인 설정

page.link 하위 도메인 대신 자체 도메인을 사용하여 Dynamic Links 브랜딩을 보다 세부적으로 관리할 수 있습니다. 커스텀 도메인을 사용하면 다음 예시와 같은 Dynamic Links를 만들 수 있습니다.

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

link-suffix 앞에 있는 URL 부분을 URL 프리픽스라고 하며 이 부분은 커스텀 Dynamic Link 도메인과 경로 프리픽스를 모두 포함합니다. Dynamic Links를 만들 때 이 URL 프리픽스를 제공해야 합니다.

커스텀 도메인을 설정하려면 Firebase 프로젝트의 편집자 또는 소유자 권한이 필요합니다.

Dynamic Links에 웹 도메인 사용

Dynamic Links와 웹페이지, 범용 링크, 앱 링크에 동일한 도메인을 사용할 수 있지만 이 경우 Dynamic Link URL이 웹 URL과 충돌하지 않도록 주의해야 합니다. 특정 URL 프리픽스를 사용하도록 Dynamic Links를 구성하면 이 프리픽스로 시작하는 모든 URL은 Dynamic Links로 처리되므로 일반적인 호스팅 콘텐츠를 가리키는 데 이 프리픽스가 있는 URL을 사용할 수 없습니다.

예를 들어 https://example.com/my-resource 리소스(웹페이지, 범용 링크 또는 앱 링크)에 대한 Dynamic Link를 만들려면 https://example.com/Dynamic Links URL 프리픽스로 사용해서는 안 됩니다. 이렇게 하면 https://example.com/my-resourceDynamic Link로 처리되기 때문입니다. 대신 다른 도메인 또는 다른 경로 프리픽스가 있는 URL 프리픽스를 사용해야 합니다.

따라서 다음과 같은 긴 Dynamic Links(및 상응하는 짧은 링크)는 link 매개변수로 지정된 URL이 Dynamic Link URL 프리픽스인 https://example.com/으로 시작하므로 의도한 대로 작동하지 않게 됩니다.

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

하지만 다음과 같은 긴 Dynamic Links(및 상응하는 짧은 링크)는 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 콘솔에서 커스텀 도메인을 완전히 설정하려면 다음 안내를 따르세요.

  1. 프로젝트에 Firebase Hosting을 설정하지 않았다면 Firebase 콘솔의 Hosting 페이지를 열고 시작하기를 클릭한 다음 설정 안내를 클릭합니다. 표시된 단계를 지금 완료하지 않아도 됩니다.

  2. Firebase 콘솔의 Dynamic Links 페이지를 엽니다.

  3. 이전에 Dynamic Links를 사용한 적이 없다면 시작하기를 클릭합니다. 사용한 적이 있다면 드롭다운 메뉴에서 URL 프리픽스 추가를 클릭합니다.

    그런 다음 메시지가 표시되면 사용할 도메인과 경로 프리픽스를 지정하여 설정 마법사를 완료합니다.

  4. iOS만 해당: Xcode 프로젝트의 Info.plist 파일에서 FirebaseDynamicLinksCustomDomains 키를 만들어 앱의 Dynamic Links URL 프리픽스로 설정합니다. 예를 들면 다음과 같습니다.

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

수동으로 커스텀 도메인 설정

Dynamic Links에 커스텀 도메인을 이미 설정했고 다른 도메인을 추가하려는 경우나 Hosting 사이트에 이미 연결된 도메인을 추가하려는 경우와 같은 특정 상황에서는 커스텀 도메인을 수동으로 설정해야 합니다.

방법은 다음과 같습니다.

  1. 아직 설정하지 않은 경우 도메인을 Firebase Hosting에 연결합니다.

    Firebase Hosting으로 도메인을 설정하는 작업에는 로컬 프로젝트 디렉터리에서 firebase.json 구성 파일을 만드는 과정이 포함됩니다.

  2. 최신 버전의 Firebase CLI(v6.5.0 이상)로 업데이트합니다.

  3. 프로젝트의 firebase.json 파일에서 Dynamic LinksHosting 사이트를 구성합니다. 프로젝트에 여러 사이트가 있으면 사용할 도메인에 연결된 사이트를 구성해야 합니다.

    • appAssociationAUTO로 설정합니다. 이렇게 설정하면 Hostingassetlinks.jsonapple-app-site-association 파일이 요청될 때 동적으로 이러한 파일을 생성합니다.

    • 재작성 규칙에서 dynamicLinkstrue로 설정하여 Dynamic Links에 사용할 경로 프리픽스를 지정합니다. 이 경로에 대한 요청은 Dynamic Links로 프록시 처리됩니다.

      경로를 URL에 재작성하는 규칙과 달리 Dynamic Link 재작성 규칙에는 정규 표현식이 포함될 수 없습니다.

      사이트에 여러 재작성 규칙이 있는 경우 Hosting은 요청과 일치하는 첫 번째 재작성 규칙을 실행한다는 점에 유의하세요.

    예를 들면 다음과 같습니다.

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

    위의 구성을 사용하면 다음 예시와 같은 URL 프리픽스가 있는 Dynamic Links를 만들 수 있습니다.

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

    이 도메인을 Dynamic Links에만 사용하면 /** 소스 경로를 사용하여 경로 프리픽스가 없는 Dynamic Links를 만들 수 있습니다.

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

    위의 규칙을 사용하면 다음 예와 같은 Dynamic Links를 만들 수 있습니다.

    https://your-domain/link-suffix

  4. Hosting 구성 변경사항을 배포합니다.

    firebase deploy --only hosting

    (선택사항) Hosting REST API를 사용하여 배포된 firebase.json 콘텐츠를 확인할 수 있습니다.

  5. iOS만 해당: Xcode 프로젝트의 Info.plist 파일에서 FirebaseDynamicLinksCustomDomains 키를 만들어 앱의 Dynamic Links URL 프리픽스로 설정합니다. 예를 들면 다음과 같습니다.

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

Dynamic LinksHosting의 우선순위

Dynamic Links의 경우 호스팅 우선순위에 특히 유의하세요.

  • Dynamic Links URL 프리픽스가 우선순위가 높은 호스팅 구성과 충돌하지 않아야 합니다. 예를 들어 호스팅되는 정적 콘텐츠는 항상 재작성보다 우선순위가 높습니다.
  • rewrites 속성 내에서 Hosting 응답은 요청 경로를 캡처하는 첫 번째 source glob에서 지정한 규칙을 준수합니다.

예를 들어 your-domain/source-path/link-suffixDynamic Link를 설정했지만 your-domain/source-path/index.html에 정적 콘텐츠도 있다면 정적 콘텐츠가 우선합니다. 최종 사용자에게는 Dynamic Link 대신 index.html이 표시됩니다. 마찬가지로 your-domain/source-path/link-suffix에 정적 콘텐츠가 있으면 Dynamic Link 대신 정적 콘텐츠가 최종 사용자에게 표시됩니다.

Dynamic LinksHosting에 동일한 브랜딩을 사용하려면 Dynamic Links URL 프리픽스에 다음 옵션 중 하나를 사용하세요.

  • 경로 프리픽스와 일치하도록 source 속성을 설정합니다. 예를 들어 커스텀 도메인이 example.com이면 재 작성 규칙은 다음과 같습니다.

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Dynamic Links에 사용할 하위 도메인을 설정한 후 하위 도메인과 일치하도록 source 속성을 설정합니다. 예를 들어 하위 도메인이 links.example.com이라면 재작성 규칙은 다음과 같을 수 있습니다.

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