Ubuntu 14.04でApacheを使用してwwwをwww以外にリダイレクトする方法

前書き

Webサイトまたはアプリケーションをドメインの背後で実行している場合、ユーザーがプレーンドメイン名_and_ * www サブドメインを介してアクセスできるようにすることが望ましい場合がよくあります。 つまり、「http:// www。[www。]」プレフィックスの有無にかかわらず、ドメインにアクセスできる必要があります。 `+ example.com `または ` www.example.com +`をWebブラウザーで開き、同じコンテンツを表示します。 これを設定するにはさまざまな方法がありますが、一貫性とSEOの考慮のための最適なソリューションは、プレーンまたはwwwのどちらのドメインを選択し、もう一方を優先ドメインにリダイレクトすることです。 このタイプのリダイレクトは Permanent Redirect *または「301リダイレクト」と呼ばれ、DNSリソースレコードとWebサーバーソフトウェアを適切に構成することで簡単にセットアップできます。

このチュートリアルでは、www URLをwww以外にリダイレクトする方法を示します。 Ubuntu 14.04上のApacheで、「+ www.example.com 」を「 example.com +」に。 また、www以外のURLからhttp:// www [www]に別の方向にリダイレクトする方法も示します。 このチュートリアルのCentOS 7バージョンは、https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www-with-apache-on-centos-7 [こちら]から入手できます。

WebサーバーとしてNginxを使用してこのタイプのリダイレクトを実行する場合は、代わりにこのチュートリアルに従う必要があります:https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-nginx-on-ubuntu-14-04 [Ubuntu 14.04でNginxを使用してwwwをwww以外にリダイレクトする方法]。

前提条件

このチュートリアルでは、スーパーユーザー特権、つまり Apacheを実行しているサーバー上の `+ sudo +`またはルート。 まだセットアップしていない場合は、このチュートリアルに従ってください:https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04[Ubuntu 14.04での初期サーバーセットアップ] 。

Apacheがインストールされていることを前提としています。 この設定をまだ行っていない場合は、https://www.digitalocean.com/community/tags/apache [Apache tag]の下に主題に関するいくつかのチュートリアルがあります。

ドメインを管理しているDNSにレコードを追加できる必要があります。 まだドメインをお持ちでない場合は、ドメインレジストラーからドメインを購入し、レジストラーのDNSまたはhttps://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-で管理できます。共通ドメインレジストラからのネームサーバー[DigitalOceanのDNS]。 このチュートリアルでは、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOcean DNS]を使用して必要なレコードを作成します。

DNSレコードを設定して始めましょう。

DNSレコードを構成する

目的のリダイレクト、「+ www.example.com 」から「 example.com +」、またはその逆を設定するには、名前ごとに* Aレコード*が必要です。

DNSの管理に使用するものは何でも開きます。 この例では、https://cloud.digitalocean.com/domains [DigitalOcean DNS]を使用します。

ドメイン(ゾーンとも呼ばれる)レコードがまだ存在しない場合は、ここで作成します。 * hostname *はドメインである必要があります。 + example.com +、およびIPアドレスはApacheサーバーのパブリックIPアドレスに設定する必要があります。 これにより、指定したIPアドレスをドメインにポイントするAレコードが自動的に作成されます。 別のシステムを使用してドメインを管理している場合、これを手動で追加する必要があります。

次に、ホスト名として「www」(または部分的なサブドメインが機能しない場合は「http://www.example.com [www.example.com]」)を含む別のAレコードを追加し、同じIPアドレスを指定します。

両方のレコードを作成すると、次のようになります。

画像:https://assets.digitalocean.com/articles/redirect/dns_a_records.png [必須レコード]

これで、wwwドメインとwww以外のドメインを介してサーバーにアクセスできるようになりますが、リダイレクトを設定する必要があります。 今からそれを行います。

書き換えモジュールを有効にする

301リダイレクトを実行するには、Apache * mod_rewrite 、またはRewriteモジュールを使用します。 そうすることで、ユーザーが www。*プレフィックスの有無にかかわらずサイトにアクセスできるようになり、希望するドメインにリダイレクトされます。

まず、次のコマンドでmod_rewriteモジュールを有効にします。

sudo a2enmod rewrite

Rewriteモジュールを有効にすると、 `+ .htaccess +`ファイルを使用してリダイレクトルールでApacheを設定できます。

.htaccessファイルを有効にする

Apache構成ファイルを編集用に開きます。 Ubuntuでは、デフォルトの設定ファイルは `+ / etc / apache2 / sites-enabled / 000-default.conf +`にあるため、この例で使用します。

sudo vi /etc/apache2/sites-enabled/000-default.conf

サイトのDocumentRootを見つけて、メモします。 デフォルトでは、 `+ / var / www / html +`であるため、設定例ではそれを使用します。

次のDirectoryディレクティブを構成に追加し、強調表示された部分をDocumentRootに置き換えてください。

Apache構成に追加する

<Directory >
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   allow from all
</Directory>

保存して終了。

次に、Apacheを再起動して、変更を有効にします。

sudo service apache2 restart

これで、Apacheは、「+ / var / www / html」ディレクトリの下の任意の場所にある「+ .htaccess」ファイルを読み取るように設定されます。 書き換えルールを追加しましょう。

書き換えモジュールの構成

前述したように、 `+ .htaccess +`ファイルを使用してRewriteモジュールを設定します。

ディレクトリをドキュメントルートに変更します。この例では、 `+ / var / www / html`です。

cd /var/www/html

編集のために `+ .htaccess +`を開きます:

sudo vi .htaccess

もちろん、ファイルを作成したことがない場合は空白になります。 リダイレクトする方向に応じて、次のオプションのいずれかを使用します。

オプション1:wwwをwww以外にリダイレクトする

ユーザーをwwwからプレーンな非wwwドメインにリダイレクトする場合は、次の構成を挿入します。

htaccess - www to non-www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

保存して終了。 変更はすぐに有効になります。 HTTPSを使用している場合、 `+ RewriteRule +`行の“ http”を“ https”に更新する必要があることに注意してください。

このcurlコマンドを使用して、非wwwドメインがwwwドメインにリダイレクトされるようにします(強調表示された部分を実際のドメインに置き換えます)。

curl -I http://www.

次のように、www以外のリダイレクト場所を示す「+301 Moved Permanently +」応答が返されるはずです。

Output:HTTP/1.1 301 Moved Permanently
Date: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
Location: http:///
Content-Type: text/html; charset=iso-8859-1

もちろん、Webブラウザ(wwwおよび非www)でドメインにアクセスする必要があります。

オプション2:非wwwをwwwにリダイレクトする

ユーザーをプレーンな非wwwドメインからwwwドメインにリダイレクトする場合は、次の構成を挿入します。

htaccess - non-www to www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

保存して終了。 変更はすぐに有効になります。 HTTPSを使用している場合、 `+ RewriteRule +`行の“ http”を“ https”に更新する必要があることに注意してください。

このcurlコマンドを使用して、非wwwドメインがwwwドメインにリダイレクトされるようにします(強調表示された部分を実際のドメインに置き換えます)。

curl -I http://

次のように、wwwリダイレクトの場所を示す「+301 Moved Permanently +」レスポンスが返されます。

Output:HTTP/1.1 301 Moved Permanently
Date: Fri, 01 May 2015 21:18:33 GMT
Server: Apache/2.4.7 (Ubuntu)
Location: http://www./
Content-Type: text/html; charset=iso-8859-1

もちろん、Webブラウザ(wwwおよび非www)でドメインにアクセスする必要があります。

結論

それでおしまい! これで、Apacheリダイレクトが適切に構成され、ユーザーは非wwwおよびwwwドメインを介してWebサーバーにアクセスできるようになります。

リダイレクトの実装に使用したApacheの機能である* mod_rewrite *について詳しく知りたい場合は、このチュートリアルをお読みください:https://www.digitalocean.com/community/tutorials/how-to-set- up-mod_rewrite [Mod_Rewriteの設定方法]。

Related