web-dev-qa-db-ja.com

IISルールを書き換えて、特定のドメインURLを同じドメインの別のURLにリダイレクトする

IIS 7.5書き換えルールで http://www.domain.com/url1http://www.domain)にリダイレクトしたいだけです。 com/url2 (同じドメイン)。これは次の方法で実現できます。

<rule name="Redirect url" enabled="true" stopProcessing="true">
    <match url="^url1" />
    <action type="Redirect" url="http://www.domain.com/url2"
      appendQueryString="false" redirectType="Permanent" />
</rule>

ただし、このWebサイトはいくつかのドメインをリッスンしているため、上記はすべてのドメインのグローバルルールになります。これをdomain.comに固有にする方法を教えてください。一致するURLを変更して条件を追加しようとしましたが、機能しません。ありがとう。

8
James Barry

私はそれをこのように機能させました:

<rule name="Redirect url1" stopProcessing="true">
     <match url="^url1$" />
     <conditions>
          <add input="{HTTP_Host}" pattern="^(www.)?domain.com$" />
     </conditions>
     <action type="Redirect" url="http://www.domain.com/url2"
      appendQueryString="false" redirectType="Permanent" />
</rule>
10
James Barry

このページの回答を使用して、自分でルールを微調整することができました。クエリパラメータも追加しました。それが誰かを助ける場合に備えて、ここに投稿したかった:

<!-- probably requires custom rewrite module, available through web platform installer -->
<rule name="Redirect oldsite.com" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{HTTP_Host}" pattern="^.*oldsite\.com$" />
    </conditions>
    <action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form"
      appendQueryString="false" redirectType="Permanent" />
</rule>

説明のいくつかのビット:

混乱を解消するために、この「url」は、URL全体ではなく、ドメインの後の最初のスラッシュの一部ですafter。これを入れて、任意のURLを取得します。

<match url=".*" />

ここで、このコンピューターに複数のWebサイトがあるため、条件を追加します。したがって、このルールがそのうちの1つだけに適用されるようにします。 「(www。)?」の代わりにワイルドカードも使用しましたワイルドカードはすべてのサブドメインをキャッチするためです。

<conditions>
    <add input="{HTTP_Host}" pattern="^.*oldsite\.com$" />
</conditions>

そして最後の注意は、複数のクエリ文字列パラメータを入れたい人のためのものです。そうしないと機能しないため、それらの間のアンパサンドをエスケープする必要があります。

<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form"
  appendQueryString="false" redirectType="Permanent" />
4
sugardaddy