---
title: "EXMにおけるリンク生成とホスト名マッピング"
slug: "link-generation-and-hostname-mapping-in-exm"
abstract: "EXMはメールメッセージ内のリンクが、公開されているコンテンツ配信サーバーを指す絶対的なURLであることをチェックします。"
---
# EXMにおけるリンク生成とホスト名マッピング

EXMはウェブリクエストを使ってメールの内容をレンダリングし、メール内の内部リンクはLinkManagerクラスでレンダリングされます。

> !注メールメッセージのコンテンツにURLを生成するロジックは、Sitecoreがウェブサイト上のページをレンダリングする際に用いる手法と同じです。Sitecoreでは、多くの設定が内部リンクの生成方法に影響を与えます。例えば、サイトの定義やLinkManagerクラスの設定などです。

受信者がメール内のリンクをクリックすると、そのリンクが公開されているコンテンツ配信サーバーを指す絶対的なURLであることが非常に重要です。したがって、メールを送信する際には、絶対的なURLで生成されていないリンクやコンテンツ管理サーバーを指していないリンクをEXMはチェックし、修正します。

> !注例えば、テストメールキャンペーンを送信し、リンクをクリックした受信者をまだ公開されていないコンテンツのウェブサイトに誘導したい場合、[マネージャーのルートで別のプレビューホスト名を設定する](https://doc.sitecore.com/xp/ja/developers/exm/103/email-experience-manager/the-manager-root-settings.html "The manager root settings")ことができます。

EXM modifyHyperlinkパイプラインで指定された以下のプロセスに従ってハイパーリンクを検証し生成します。

-   #で始まるリンクは無視してください、javascript: またはmailto:
    
-   例えば、現在のServerUrlを[https://cms.domain.com](https://cms.domain.com)します。
    
-   リンクが絶対的でない場合は、ServerUrlを接頭辞に付けて絶対的なものにしてください。
    
-   ホスト名を以下のホストネームマッピングと照合し、必要に応じてホスト名を置き換えEXM、例えばテスト用に[https://preview.domain.com](https://preview.domain.com) 、ディスパッチ用に[https://www.domain.com](https://www.domain.com)を置き換えます。
    
    EXMは以下のホスト名マッピングを用いてホスト名をチェックします:
    
    -   マネージャの根は PreviewUrl から BaseUrlへのマッピングを生成します。
    -   コンテンツツリーの */sitecore/system/Settings/Email/System/Hostname Mappings* で作成されたマッピング。
    -   RendererUrlはメールメッセージのマネージャルートのPreviewUrlまたはBaseUrlにマッピングされます。RendererUrlはメール内容をレンダリングするためにEXMが使うべきホスト名であり、デフォルトのは現在のサーバーのホスト名です。
    
    > !注このホスト名のマッピング方法は、Sitecore.EmailExperience.Core.config file, in the HostnameMappingServiceクラスとHostnameMappingRepositoryクラスで定義されています。この動作を上書きするには、IHostnameMappingServiceおよびIHostnameMappingRepositoryインターフェースを実装した独自のクラスを作成し、それに応じて [設定をパッチできます](https://doc.sitecore.com/xp/en/developers/100/platform-administration-and-architecture/en/use-a-patch-file-to-customize-the-sitecore-configuration.html) 。
    
-   リンクにはメッセージ、連絡先、使用メールアドレス、対象言語、テストバリアントを特定するための追加のqueryStringパラメータxDB追加A/B。
    
-   ディスパッチのみの場合:リンクをデフォルトでRedirectUrlPage.aspxのクリックトラッカーに置き換え、元のURLをクエリ文字列パラメータとして追加します。
    
-   発送のみ: queryStringを暗号化してください。
    

## カスタムホスト名マッピングの追加

modifyHyperlinkパイプラインで指定されているホスト名マッピングのデフォルト動作がリンクに誤ったホスト名を生成する場合、例えばリンクが受信者をコンテンツ管理サーバー、間違ったサイト、または誤った言語に誘導する場合、カスタムホスト名マッピングを追加できます。

例えば、あなたの組織には2つのサイトがあります:

-   サイト1
    -   コンテンツ管理: [https://cms.site1.com](https://cms.site1.com)
    -   コンテンツ配信: [https://www.site1.com](https://www.site1.com)
-   サイト2
    -   コンテンツ管理: [https://cms.site2.com](https://cms.site2.com)
    -   コンテンツ配信: [https://www.site2.com](https://www.site2.com)

例では、マネージャーのルートでベースURL [https://www.site1.com](https://www.site1.com)のメールキャンペーンを作成します。メールメッセージ内で、Site1とSite2の両方へのリンクを追加します。

デフォルトでは、Site2のウェブページに対して、コンテンツ管理サーバーは[https://cms2.site2.com](https://cms2.site2.com)を指すリンクを生成しますが、コンテンツ配信サーバー上の同じページの正しいアドレスEXM特定できません。この問題を解決するために、コンテンツエディターでホスト名マッピングアイテムを作成し、コンテンツ管理サーバーのホスト名を同等のコンテンツ配信サーバーにマッピングできます。

ホスト名マッピング項目を作成するには:

-   */sitecore/system/Settings/Email/System/Hostname Mappings*フォルダの下に新しいアイテムを作成します。*Hostname Mapping*テンプレート*(/sitecore/templates/Email Campaign/Global Settings/Hostname Mapping*)を使ってください。
    -   **オリジナル**フィールドには、元のコンテンツ管理サーバーのホスト名(例えば [https://cms.site2.com/](https://cms.site2.com/))を入力してください。
    -   **プレビュー**欄にプレビューウェブサイトの同等のホスト名を入力してください。これは任意です。
    -   **パブリック**欄では、コンテンツ配信サーバーの同等のホスト名(例えば [https://www.site2.com/](https://www.site2.com/))を入力します。

![Content Editor Hostname Mapping section.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/exm/103/email-experience-manager/images/459FFEBFBC0048268E31BA8CADE71307.png)