IIS URL Rewriteを使用してURLからwwwサブドメインを削除する最適な方法は何ですか?
(ルールにハードコーディングするのではなく)任意のホスト名で機能させたい場合は、次のようにします。
<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ハッシュが存在する場合、それらはサーバーに渡されないため、プロセスで失われることに注意してください。
IISは自動的にそれを行います:
サイト> URL書き換え>新しいルール>正規ホスト名を選択:)
次のものが機能するはずです:
<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>