web-dev-qa-db-ja.com

IIS URL書き換えを使用してアドレスからwwwを削除する適切な方法

IIS URL Rewriteを使用してURLからwwwサブドメインを削除する最適な方法は何ですか?

25
Chris Marisic

(ルールにハードコーディングするのではなく)任意のホスト名で機能させたい場合は、次のようにします。

<rule name="Remove www" stopProcessing="true">
  <match url="(.*)" ignoreCase="true" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_Host}" pattern="^www\.(.+)$" />
  </conditions>
  <action type="Redirect" url="http://{C:1}/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>

リダイレクトアクションでは、{C:1}には条件の2番目のキャプチャグループが含まれますが、{R:0}にはルール(パス)に含まれるものがすべて含まれます。 appendQueryString = "true"は、クエリ文字列をリダイレクトに追加します(存在する場合)。ただし、URLハッシュが存在する場合、それらはサーバーに渡されないため、プロセスで失われることに注意してください。

37

IISは自動的にそれを行います:

サイト> URL書き換え>新しいルール>正規ホスト名を選択:)

7
frapeti

次のものが機能するはずです:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Remove WWW" stopProcessing="true">
        <match url="^(.*)$" />
        <conditions>
          <add input="{HTTP_Host}" pattern="^(www\.)(.*)$" />
        </conditions>
        <action type="Redirect" url="http://www.example.com{PATH_INFO}" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
5
tugberk