7

SOでこの質問をするのはこれが初めてではないことを願っています。

Web サイトに URL があり、query string値を使用しています。例: http://foo.com/xyzPage.aspx?barvalue=yehaa

http://yehaa.foo.com/

サーバー上に実際にサブドメインを作成せずにそれを達成する方法を提案してください..

IIS 7.5をサーバー マシンにインストールし、Asp.net 4.0を使用しています。

どうもありがとう

4

1 に答える 1

12

コメントに従って編集します。

http://foo.com/xyzPage.aspx?barvalue=yehaaを使用してアクセスするhttp://yehaa.foo.com/には、次のルールを使用する必要があります。

<rules>
    <rule name="Rewrite subdomains">
        <match url="^/?$" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^(.+)\.foo\.com$" />
        </conditions>
        <action type="Rewrite" url="http://foo.com?barvalue={C:1}" />
    </rule>
</rules>

a で終わるかどうかに関係なく、すべての URL と一致し、/前に何かを使用してから、前に入力された値が何であれfoo.com、それをhttp://foo.com?barvalue={C:1}where is に書き換えます。{C:1}foo.com

に直接アクセスできないようにしたい場合はhttp://foo.com?barvalue={C:1}、以下のルールを使用できます。


ファイルに次のルールを追加することで、IIS の書き換えモジュールを使用できます。web.config

<rewrite>
    <rules>
        <rule name="Redirect to Subdomains" stopProcessing="true">
            <match url="^xyzPage.aspx$" />
            <conditions>
                <add input="{QUERY_STRING}" pattern="^barvalue=(.+)$" />
            </conditions>
            <action type="Redirect" url="http://{C:1}.{HTTP_HOST}" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

URL が正確に一致するかどうかをチェックしますxyzPage.aspx(前後に何もありません)。
クエリ文字列にbarvalueパラメーター (およびこのパラメーターのみ) が含まれているかどうか、およびその値が空でないかどうかを確認します。
これらの 2 つの条件が OK の場合、 to がトリガーRedirectされhttp://barvalue.original.hostます。

あなたの質問は を指定Rewriteしているので、これが本当にやりたいことなら、アクションtype="Redirect"をに変更してくださいtype="Rewrite"

重要:アプリケーション リクエスト ルーティング モジュールRewriteをインストールし、別のドメインに対してプロキシ モードを有効にしてセットアップする必要がある場合があります。

于 2013-03-07T15:47:18.217 に答える