30

ワイルドカード ドメインに関して Apache と同じ機能を実現するように IIS7 を構成することは可能ですか? URL で使用されるサブドメイン ユーザーに基づいて、ASP.NET Web アプリケーションでユーザーをルーティングすることに興味があります。

ここに次のようなものが記述されています。

http://steinsoft.net/index.php?site=programming/articles/apachewildcardドメイン

ありがとう

4

6 に答える 6

42

答えは「いいえ」です。IIS7は(まだ)ワイルドカードのホスト名をサポートしていません(これを参照)。1つのWebサイトで複数のドメインを提供する場合、現時点での唯一の回避策は、専用IPを使用し、ワイルドカードをサポートするDNSを使用することです。

2013アップデート

完全を期すために、IIS8にもこの機能はまだありません。

2016年の更新

最後に、Windows2016のIIS10は、ワイルドカードサブドメインをサポートしています。

于 2009-04-14T00:39:03.890 に答える
16

IIS はワイルドカード ホスト ヘッダーをサポートしていますか? *.mydomain.com をキャプチャして 1 つの Web サイトにリダイレクトできますか?

答えはイエス/ノーです。はい、*.mydomain.com を 1 つの Web サイトにリダイレクトできるためです。いいえ、魔法は IIS ではなく DNS にあるためです。

その方法は次のとおりです
。IIS MMC で、ホスト ヘッダーのない Web サイトを構成し、そのサイトに IP アドレスを割り当てます。(ボックスに 1 つの IP アドレスがある場合は、これをスキップできます)。これにより、Web サイトは特定の IP にバインドされ、IP に送信されるすべての HTTP 要求をリッスンし、完了です :)

次のステップは、名前解決がワイルドカード クエリで機能することを確認し、正しい IP アドレスで応答することです。Microsoft DNS サービスを使用している場合、「*」A レコードを作成することはできません (DNS MMC でドメイン ゾーンを既に作成していると仮定します)。次の手順を実行する必要があります。

  1. 案内する%windir%\system32\dns\
  2. ゾーン ファイルを見つけます。例:
    mydomain.com.dns、メモ帳で開きます
  3. エントリを追加します。例えば
    * A IP.IP.IP.IP
  4. ゾーン データ ファイルを保存する
  5. DNS MMC でゾーン データを再読み込みします。

これを行うと、すべての * が以前に構成した 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 ページが表示されるはずです。

ソース

于 2009-03-06T00:13:29.690 に答える
6

Microsoft の DNS ではワイルドカード (*) A レコードを作成できませんが、ワイルドカード は作成できCNAMEます。すべてのサブドメインを特定の IP に誘導するだけであれば、これでうまくいきます。たとえば、 の A レコードがある場合は、 のレコードを追加www.mydomain.comして、を指すことができます。リクエスト ヘッダーのホスト名は引き続きサブドメインであるため、必要に応じて Web アプリでそれをキャッチして処理できる必要があります。CNAME*.mydomain.comwww.mydomain.com

于 2012-05-23T14:19:34.390 に答える
4

Web Platform Installer ( http://www.microsoft.com/web/downloads/platform.aspx ) を使用して「URL Rewrite」モジュールをインストールすると、IIS を使用できます。「*.example.com」のような「A」レコードを追加すると、すべてのサブドメインを IIS サーバーに送信できます。IIS サーバーでは、デフォルトの Web サイトに URL 書き換えルールを追加するだけで、別の URL へのリダイレクトなど、任意の処理を実行できます。ユーザーが「xyz.example.com」などと入力すると、「example.com」にリダイレクトし、すべての不明なサブドメインをルート ドメインに向けることができます。手順は次のとおりです。

  1. Web プラットフォーム インストーラーのインストール: http://www.microsoft.com/web/downloads/platform.aspx

    それを実行し、「URL Rewrite」を検索してインストールします。

  2. デフォルトの Web サイトに移動し、「URL 書き換え」を開きます。

  3. 右端の [ルールの追加] をクリックします。

  4. ルールに名前を付けて、次のように設定します。

    要求された URL: パターンに一致

    使用: 正規表現

    パターン: (。*)

    論理グループ化: すべて一致

  5. 新しい条件を追加し ([追加] ボタンをクリック)、次のように設定します。

    条件入力: {CACHE_URL}

    入力文字列のチェック: パターンに一致

    パターン (必要に応じて変更): (http|https)://(.*?)\.rootdomain\.tld

    [OK]をクリックします。

  6. アクションまでスクロールして、次のように設定します。

    アクション タイプ: リダイレクト

    リダイレクト URL (必要に応じて変更): {C:1}://rootdomain.tld{R:0}

「{C:#}」と「{R:#}」は、正規表現パターン エントリの横にある [テスト パターン] ボタンをクリックすると、テスト ウィンドウから取得されます。サーバー値の一部を照合して、後で再利用できます。

また、URL (上記の手順 6 の「{C:1}」) で HTTP/HTTPS を渡す際のヒントを確認することもできます: http://weblogs.asp.net/owscott/url-rewrite- protocol-http-https-in-the-action

于 2014-08-14T18:57:09.840 に答える
0

更新 2: リンクが壊れています。IIS 10 にアップグレードしてください。ワイルドカードがサポートされるようになりました。

更新:これはしばらくの間機能しますが、しばらくすると、複数のリクエストが殺到しました。この方法はお勧めしません。

DNS レコードが正しく設定されている (*->@ の CNAME レコード) ことを確認してください。問題なく動作します。複数のドメインでテスト済み。

リンクが壊れており、以前は http://pzxc.com/apache-style-wildcard-hostname-rewrite-rules-in-iis でした

于 2014-10-22T23:06:29.087 に答える
0

IIS 10 以降にアップグレードできないユーザーの場合、リバース プロキシ経由でワイルドカード ホスト名のサポートを有効にすることはそれほど難しくありません。

HTTP の例は以下のとおりですが、その他のセットアップはあと数ステップです。

  1. *:80 にバインドし、ホスト名を指定しないキャッチオール サイトを作成します。
  2. *:8091 にバインドし、ホスト名を指定しない最初のサイトを作成します。
  3. *:8092 にバインドし、ホスト名を指定しない 2 番目のサイトを作成します。
  4. 両方のサイトをテストして先に進みます。
  5. ARR と URL 書き換えモジュールをインストールします。
  6. キャッチオール サイトで書き換えルールを作成して、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 にはオーバーヘッドがあるため (ただし、一般的には無視できる)、パフォーマンスも向上します。

于 2018-09-18T00:39:53.917 に答える