これは、Apacheがワイルドカードドメインに関して持っているのと同じ機能を実現するようにIIS7を構成することは可能ですか? URLで使用されるサブドメインユーザーに基づいてASP.NET Webアプリケーションでユーザーをルーティングすることに興味があります。
のようなものがここに記述されています:
http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain
ありがとう
IIS7はワイルドカードホスト名をサポートしていません( this を参照)。 1つのWebサイトで複数のドメインにサービスを提供する場合、現時点での唯一の回避策は、通知されているとおり、専用IPを使用して、ワイルドカードをサポートするDNSでそれを実行することです。
完全を期すために、IIS8にもこの機能はまだありません。
最後に、IIS Windows 2016の10はワイルドカードサブドメインをサポートしています。
IISはワイルドカードホストヘッダーをサポートしていますか?* .mydomain.comをキャプチャして1つのWebサイトにリダイレクトできますか?
答えは「はい/いいえ」です。はい。*。mydomain.comを1つのWebサイトにリダイレクトできます。いいえ、魔法はIISではなくDNSにあるためです。
方法は次のとおりです。
At IIS MMC、ホストヘッダーなしでWebサイトを構成し、サイトにIPアドレスを割り当てます(ボックスにIPアドレスが1つある場合は、これをスキップします。これで、Webサイトは特定のIPにバインドされ、IPに送信されたすべてのHTTPリクエストをリッスンし、完了します:)
次のステップは、ワイルドカードクエリで名前解決が機能することを確認し、正しいIPアドレスで応答することです。 Microsoft DNSサービスを使用している場合、「*」Aレコードを作成することはできません(DNS MMCでドメインゾーンをすでに作成している場合)、次のことを行う必要があります。
%windir%\system32\dns\
_に移動します* A IP.IP.IP.IP
_これを行うことにより、すべての*は以前に構成したIPに応答することに注意してください。例えば。 abc.mydomain.com、www.mydomain.com、K2k.mydomain.comなど.
それが機能していることを確認するには、pingユーティリティping (insert anything here).mydomain.com
を試してください。IP.IP.IP.IPから応答が得られます。
次に、http://(ここに何でも挿入).mydomain.com /を参照してみてください。設定したのと同じWebページが表示されます。
MicrosoftのDNSでワイルドカード(*)レコードを作成することはできませんが、canワイルドカードCNAME
を作成します。すべてのサブドメインを特定のIPに向けるだけの場合、これは機能します。たとえば、www.mydomain.com
のAレコードがある場合、*.mydomain.com
のCNAME
レコードを追加して、www.mydomain.com
を指すようにすることができます。リクエストヘッダーのホスト名は引き続きサブドメインであるため、必要に応じてウェブアプリでホスト名をキャッチして処理できる必要があります。
IIS Web Platform Installer( http://www.Microsoft.com/web/downloads/platform.aspx )を使用し、「 URL Rewrite」モジュール。「*。example.com」などの「A」レコードを追加すると、すべてのサブドメインをIISサーバーに送信できます。IISサーバーでは、デフォルトのWebサイトにURL書き換えルールを追加するだけで、別のURLへのリダイレクトなど、好きなことを実行できます。ユーザーが「xyz.example.com」と入力すると、リダイレクトできます。 「example.com」に変更し、不明なサブドメインをすべてルートドメインにポイントします。手順は次のとおりです。
Webプラットフォームインストーラーのインストール: http://www.Microsoft.com/web/downloads/platform.aspx
それを実行し、「URL Rewrite」を検索して、インストールします。
デフォルトのWebサイトに移動し、「URL書き換え」を開きます。
右端の[ルールの追加]をクリックします。
ルールに名前を付け、以下を設定します。
リクエストされたURL:パターンに一致
使用:正規表現
パターン:(。*)
論理グループ:すべてに一致
新しい条件を追加し([追加...]ボタンをクリックします)、次のように設定します。
条件入力:{CACHE_URL}
入力文字列かどうかを確認:パターンに一致
パターン(必要に応じて変更):(http | https)://(。*?)\ .rootdomain\.tld
[OK]をクリックしてください。
次に、アクションまでスクロールして設定します。
アクションタイプ:リダイレクト
リダイレクトURL(必要に応じて変更):{C:1}://rootdomain.tld {R:0}
「{C:#}」と「{R:#}」は、正規表現パターンエントリの横にある「テストパターン」ボタンをクリックすると、テストウィンドウから取得されます。サーバー値の一部を照合して、後で再利用できます。
また、URLのHTTP/HTTPS(上記のステップ6の「{C:1}」)を渡すときにこのヒントをチェックアウトすることもできます。 http://weblogs.asp.net/owscott/ url-rewrite-protocol-http-https-in-the-action
IIS 10+)にアップグレードできないユーザーの場合、リバースプロキシ経由でワイルドカードホスト名サポートを有効にすることはそれほど難しくありません。
HTTPの例は次のとおりですが、他の設定はほんの数ステップです。
キャッチオールサイトでリライトルールを作成して、2つのサイトにリクエストをディスパッチします。
<system.webServer>
<rewrite>
<rules>
<rule name="site1" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_Host}" pattern="^(.*).site1.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8091/{R:0}" />
</rule>
<rule name="site2" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_Host}" pattern="^(.*).site2.com$" />
</conditions>
<action type="Rewrite" url="http://localhost:8092/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
サーバーレベルでは、ARRプロキシモードをオンにする必要があります。
<system.webServer>
<proxy enabled="true" />
</system.webServer>
IIS 10のワイルドカードホスト名は、ARRにオーバーヘッドがあるため(一般的には無視できるほど)、単純であり、パフォーマンスも向上します。
更新2:リンクが壊れています。IIS 10にアップグレードしてください。ワイルドカードをサポートしています。
更新:これはしばらく機能しますが、しばらくすると、複数のリクエストが送信されて衝撃を受けました。この方法はお勧めしません。
DNSレコードが正しく設定されていること(*-> @のCNAMEレコード)を確認してください。これで問題なく動作します。複数のドメインでテスト済み。
リンクが壊れています http://pzxc.com/Apache-style-wildcard-hostname-rewrite-rules-in-iis