2011-09-10 9 views

答えて

31

あなたはそれが任意のホスト名(ルールにそれをハードコーディングしない)で作業する場合、あなたはこのような何かをしたいと思います:

<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> 

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

選択サイト> URL書き換え>新しいルール>正規ホスト:HTTPおよび以下のHTTPSのために働くだろうリダイレクトを行うに

+0

私は決して最初の答えでハードコードされた断片に興奮したことはありません、私はついにこの質問に答えることができてうれしいです。 –

+3

誰かがhttpsに来たらどうなりますか? httpに自動的にリダイレクトしたくないのですか? – jedmao

+0

@mrjedmao良い点!私はそれを調べます:) –

5

1が動作するはずです以下:

<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> 
-1

<rewrite> 
     <rules> 
      <rule name="Lose the www" enabled="true" stopProcessing="true"> 
       <match url="(.*)" ignoreCase="true"/> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{HTTP_HOST}" pattern="^www\.(.*)$"/>      
       </conditions> 
       <action type="Redirect" redirectType="Permanent" url="{SchemeMap:{HTTPS}}://{C:1}/{R:1}" appendQueryString="true" /> 
      </rule> 
     </rules> 
     <rewriteMaps> 
      <rewriteMap name="SchemeMap"> 
       <add key="on" value="https" /> 
       <add key="off" value="http" /> 
      </rewriteMap> 
     </rewriteMaps> 
    </rewrite> 
2

IISがあなたのために自動的にそれをしないで使用することができます名前:

+0

ベストアンサー確かに。 –

関連する問題