web-dev-qa-db-ja.com

AzureWebサイトで非WWWをWWWにリダイレクトする

Godaddyのドメインと、AzureWebサイトインフラストラクチャ上のWebサイトがあります。私が達成したいのは、私のドメインのwwwバージョンのみを使用することです。ユーザーがブラウザに「example.com」と入力した場合、「www.example.com」にリダイレクトされます。

サイトがASP.Net MVC 5アプリをホストしている場合、それが違いを生みます。これを構成するにはどうすればよいですか?

20
RBT

このコードを<system.webServer>セクションの下に追加します

<rewrite>
<rules>
<rule name="Redirect to www">
  <match url=".*" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_Host}" pattern="^(www\.)(.*)$" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.{HTTP_Host}/{R:0}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
19
G Ravinder

実際のリダイレクトが必要な場合(つまり、ユーザーがexample.comと入力すると、ブラウザのアドレスが自動的にwww.example.comに変更されます)、2つのオプションがあります。

  1. GoDaddyが提供する転送機能を使用します(GoDaddyダッシュボード(ドメインの詳細ページにあります)。このようにして、example.comへのリダイレクトで応答するGoDaddyIPをwww.example.comにポイントできます。
  2. アドレスに「www」がないことを検出するコードをASP.NETに記述します。次にwww.example.comにリダイレクトします

ただし、example.comと入力したユーザーに、www.example.comと入力したユーザーと同じコンテンツを取得させたい場合で、アドレスバーにwwwが表示されていないexample.comが表示されてもかまいません。次のように:

  1. Azure Webサイトに関連付けられている仮想IPアドレスを取得します。Azure管理ポータルからWebサイトをクリックし、ダッシュボードセクションに移動して、[ドメインの管理]をクリックします。 「Aレコードを構成するときに使用するIPアドレス:xxx.xxx.xxx.xxx」のようなものが表示されます。
  2. GoDaddyに移動し、「Host」を@に設定し、「Pointsto」を手順1で見つかったIPに設定したAレコードを設定します。
  3. "Host"をawverifyに設定し、 "Points to"をawverifyで始まるAzure Webサイトのアドレスに設定したCNAMEレコードを追加します(例:awverify.mywebsite.azurewebsites.net
  4. 「Host」をwwwに設定し、「Pointsto」をAzure Webサイトのアドレスに設定したCNAMEレコードを追加します(例:mywebsite.azurewebsites.net
  5. GoDaddyにゾーンファイルを保存する
  6. Webサイトの[ドメインの管理]セクションでWindowsAzureに戻り、ドメイン名のリストにexample.comwww.example.comの両方を追加します。

手順6でエラーが発生した場合は、DNSの変更が反映されるまで数時間待ってから、再試行してください。

詳細はこちら: https://www.windowsazure.com/en-us/documentation/articles/web-sites-custom-domain-name/

17
Andrea Coluccio

Negate = trueの一般的なMatchAllの代わりに、ネイキッドドメインのみをキャッチし、一致する場合はリダイレクトすることを好みます。私は単一のドメインのみに関心があり、localhost、localtest.me、サブドメインなどの除外をまとめて記述する必要がないため、これはAzureに適しています。

これがルールです...パターンのexampleをドメインに変更してください:

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect To WWW" enabled="true" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny">
              <add input="{HTTP_Host}" pattern="^example\.com$" />
            </conditions>
            <action type="Redirect" url="http://www.{HTTP_Host}{URL}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
2
Jeff Widmer

これは一時的な302リダイレクトでしょうか? web.configのルールを使用したperm301リダイレクトは、SEOに適しています。

1
John Hind

ASP.NET Core MVCで、これを_Startup.cs_ Configure()メソッドに追加します。

_            app.UseRewriter(new RewriteOptions()
                // redirect non www to www.
                .AddRedirectToWwwPermanent()

                 // While we are at it, let's also redirect http to https.
                .AddRedirectToHttpsPermanent()
            );
_
0
Andrew