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

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

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

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

동적 링크에 웹 도메인 사용

동적 링크와 웹페이지, 범용 링크, 앱 링크에 동일한 도메인을 사용할 수 있지만 이 경우 동적 링크 URL이 웹 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 Console에서 커스텀 도메인 설정

일반적으로 Firebase Console에서 커스텀 도메인을 완전히 설정하려면 다음 안내를 따르세요.

  1. 프로젝트에 Firebase 호스팅을 설정하지 않았다면 Firebase Console의 호스팅 페이지를 열고 시작하기를 클릭한 후 설정 안내를 클릭하며 진행합니다. 표시된 단계를 지금 완료하지 않아도 됩니다.

  2. Firebase Console의 동적 링크 페이지를 엽니다.

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

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

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

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

수동으로 맞춤 도메인 설정

동적 링크에 맞춤 도메인을 이미 설정했고 다른 도메인을 추가하려는 경우나 호스팅 사이트에 이미 연결된 도메인을 추가하려는 경우와 같은 특정 상황에서는 맞춤 도메인을 수동으로 설정해야 합니다.

다음 안내를 따르세요.

  1. 아직 연결하지 않은 경우 도메인을 Firebase 호스팅에 연결합니다.

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

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

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

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

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

      경로를 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

  4. 호스팅 구성 변경사항을 배포합니다.

    firebase deploy --only hosting

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

  5. 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
    } ]