Sitecoreではマルチサイトを管理することができます。Sitecoreが管理するどのサイトへのリクエストなのかを判別するときに <site>セクションで定義する hostName属性をよく利用します。実はこのhostName属性には固定の静的なホスト名だけでなく、ワイルドカード文字を指定できます。そして複数のホスト名を指定することもできます!
例えばhostName="www.test-kk.net" と <site>セクションに定義しておけば ブラウザーから www.test-kk.net でアクセスしてきた場合に、そのhostNameで定義されたサイトへのアクセスと判定されます。 www.test-kk.* と定義すると www.test-kk.net でも www.test-kk.com でも www.test-kk.* で定義したサイトへのアクセスとSitecoreプラットフォームが判定してくれます。*.test-kk.* というような定義も可能です。
さらにパイプ文字(|) を使用して複数のホスト名を hostName 属性に設定できます。 hostName="*.foo.net|*.bar.net" のように設定した場合、 www.foo.net や www.bar.net というホスト名でリクエストが発生した場合、ここで定義したサイトへのリクエストとSitecoreのプラットフォームは判定してくれます。
hostNameに指定する値とSitecoreのプラットフォームがサイトを解決できるホスト名のパターンの例を以下の表に記載しておきます。
hostNameの値 | Sitecoreにより解決されるホスト名のパターン |
www.foo.net | www.foo.net |
foo | foo |
www.foo.* |
www.foo.net |
*.foo.* |
www2.foo.net |
*.foo.net|*.bar.net | www.foo.net www.bar.net |
ここでの説明はブラウザーからのリクエストがSitecoreが動作するWebサイトに割り当てられることが前提となっています。そのためにはDNSサーバーやhostsファイルなどに適切な名前解決用のエントリが設定されIISのバインドの設定でクライアントからのリクエストがSitecoreが動作するWebsiteにリクエストが割り当てられるようにセットアップされている必要があります。
ワイルドカードを指定していると、Sitecoreで管理しているサイトAから別のサイトBへの内部リンクがあるときに、ホスト名をSitecoreが解決できません。その場合は、targetHostName 属性を <site>セクションで設定してください。内部リンクがサイト間のリンクであった場合にホスト名を付与したURLを生成させるにはRendering.SiteResolving もtrueになっている必要があります(デフォルトでtrue)。
マルチサイトの構成方法に関しては SDNのサイトを "Configuring Multiple Sites"のキーワードで検索すると英語ですが設定例のあるページが見つかります。web上でセットアップ方法を説明している記事なども参考になります。
hostNameでパイプ文字(|)を使ってホスト名を複数定義する方法ですが、もちろんポート(port)属性でパイプ文字(|)を使用して複数のポートでマルチサイトを判定できるように設定できます。
さんのコメント: さんのコメント: