4

IIS Rewrite Module 2.0 を使用して、壊れたアプリケーション リンクをリダイレクトすることを検討しています。

以前は、www.mydomain.com が当社の企業サイトであり、www.mydomain.com/application1、www.mydomain.com/application2 はお客様が使用する他のアプリケーションでした。それらはすべて同じサーバー上にありました。

現在、企業サイトを更新し、別のサーバーに移動しています。したがって、www.mydomain.com と mydomain.com は別のサーバーに解決されます。この作業の一環として、app.mydomain.com のサブドメインが作成され、サーバーに常駐しているお客様のアプリケーションが格納されました。

私ができるようにしたいのは、新しい企業サイトのサーバーに書き換えモジュールをインストールし、www.mydomain/application1 または mydomain.com/application1 を app.mydomain.com/application1 にリダイレクトすることです。

私はリストアプリケーションを持っているので、rewriteMap を使用するのがよいでしょうか? これにより、www.mydomain.com/newcorporateurl などのリダイレクトが誤ってリダイレクトされるのを防ぐことができます。www.mydomain.com/application1/index.aspx?id=1 は app.mydomain.com/application1/index.aspx?id= に移動する必要があります1

これをまとめるのにどんな助けも素晴らしいでしょう! 基本的な構成を並べ替えるだけでも、それを使って遊んで、もう少し理解することができます。他の質問やリソースを閲覧していますが、これをまとめる方法にまだ苦労しています

更新 1

以下は機能しませんが、うまくいけば、私がやろうとしていることを示しています。この方法でリダイレクトする必要があるアプリケーションが約 15 個あります。

<rewrite>
    <rules>
        <rule name="application1 rule" stopProcessing="true">
            <match url="(www\.)?mydomain\.com(:80)?/application1/?" />
            <action type="Redirect" url="app.mydomain.com/application1/" appendQueryString="false" />
        </rule>
        <rule name="application2 rule" stopProcessing="true">
            <match url="(www\.)?mydomain\.com(:80)?/application2/?" />
            <action type="Redirect" url="app.mydomain.com/application2/" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

更新 2

私はこれをある程度機能させています

<rewrite>
    <rules>
        <clear />
        <rule name="application1 rule" stopProcessing="true">
            <match url="application1(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="mydomain.com" />
            </conditions>
            <action type="Redirect" url="http://app.mydomain.com/application1{R:1}" />
        </rule>
    </rules>
</rewrite>

これによりリダイレクトされます

www.mydomain.com/application1 -> app.mydomain.com/application1 www.mydomain.com/application1/index.aspx -> app.mydomain.com/application1/index.aspx

私が今解決したい問題はこれです。

www.mydomain.com の新しいサイトは CMS です。上記のルールでは、CMS が URI に「application1」をまったく含めることができないことを意味します。

実世界の例は「商用」です

以下が当てはまるように、誰かが私のルールを改良するのを手伝ってくれませんか

www.mydomain.com/commercial -> app.mydomain.com/commercial www.mydomain.com/commercial/foo/index.aspx -> app.mydomain.com/foo/index.aspx

www.mydomain.com/tv-commercials/list -> www.mydomain.com/tv-commercials/list www.mydomain.com/commercial-property/list -> www.mydomain.com/commercial-property/list

4

1 に答える 1

1

これが私が最終的に得たものです。

最初のルールは、URI が www.mydomain.com/application1 の場合、末尾のスラッシュにリダイレクトするだけです。

2 番目のルールは、大文字と小文字を無視してサブドメインにリダイレクトし、クエリ文字列を保持して、永続的なリダイレクトとして扱います。

<rule name="Trailing Slash Redirect" stopProcessing="true">
    <match url="^(application1|application2)$" ignoreCase="true" />
    <action type="Redirect" url="{R:0}/" redirectType="Permanent" />
</rule>
<rule name="Http App Redirect" stopProcessing="true">
    <match url="^(application1/.*|application2/.*)$" ignoreCase="true" />
    <action type="Redirect" url="http://app.mydomain.com/{R:0}" redirectType="Permanent" />
</rule>

Https へのリダイレクトが必要な場合は、別のルールを作成します。

于 2013-11-19T02:01:58.810 に答える