Ownedmedia ウェブ制作に役立つコンテンツを発信中!

サーバー構築 2017.09.17

ApacheのVirtualHostでwwwのサブドメインをwwwなしのドメインにリダイレクトさせる

Tags: ,,
最終更新日:Update

以前はURLに「www」といったサブドメインをつけた表記が一般的でしたが、最近はURLは短い方がいいという考え方から「www」のサブドメインが無い表記が増えてきました。ただ、同じサイトでURLが2つもあるのは不自然なのでURLを統一してリダイレクトさせるようにしていきたいと思います。

 

今回はVPSサーバーでの運用を前提に、ApacheのVirtualHost機能で設定する方法についてまとめていきます。といっても、何行か追加するだけの簡単な作業です。ちなみにドメインは「お名前.com」での運用を想定した内容になります。

 

wwwのサブドメイン設定の確認

まずその前に「www」のサブドメインが登録されているか(アクセスした時に表示されるか)を確認しておきます。サブドメインの登録と確認はドメインの管理元で行うことができます。もし、wwwのサブドメインが登録されていない(URLにアクセスしても表示されない)場合は登録作業を行う必要があります。今回の場合は「お名前.com」なので以下の順に進めていきます。

 

まずはドメイン管理のページへアクセスしてログインします。そして「ドメイン設定」のメニューから「ネームサーバーの設定」項目にある「DNS関連機能の設定」を選択します。

 

ApacheのVirtualHostでwwwのサブドメインをwwwなしのドメインにリダイレクトさせる

 

対象のドメインにチェックを入れて「次へ進む」をクリックし、遷移先ページの中程にある「DNSレコード設定を利用する」項目の「設定する」ボタンをクリックします。

 

ApacheのVirtualHostでwwwのサブドメインをwwwなしのドメインにリダイレクトさせる

ApacheのVirtualHostでwwwのサブドメインをwwwなしのドメインにリダイレクトさせる

 

DNSレコードの追加フォーマット部分で、サブドメインを設定した「Aレコード」を追加していきます。下記の通り入力していくのですが、ホスト名に今回のサブドメインである「www」を指定していきます。

・ホスト名は「www」を入力
・TYPEは「A」(IPアドレス)を入力
・TTLは「3600」と入力
・VALUEにはサーバーのIPアドレスを桁ごとに区切って入力
・状態は「有効」を選択

 

ApacheのVirtualHostでwwwのサブドメインをwwwなしのドメインにリダイレクトさせる

 

しばらくしてから「www」のサブドメインでアクセスするとサイトが表示されるのが確認できます。引き続き、本題であるリダイレクトの設定を行なっていきます。

 

VirtualHostのリダイレクト設定

まずはVPSサーバーにSSHで接続して、rootユーザーに切り替えます。そしてApacheのVirtualHost設定ファイルである「vhost.conf」をvimエディタで開きます。※ファイル名はそれぞれ任意で指定したものになります

# vim /etc/httpd/conf.d/vhost.conf

 

VirtualHost設定の中で、以下のようにリダイレクト設定を追記します。この設定では「http://www.example.com」といったwwwのサブドメインを含むURLでアクセスした場合、「http://example.com」のwwwのサブドメインが無いURLにリダイレクトさせるという内容になります。

// 変更前
<VirtualHost *:80>
  ServerName example.com
  DirectoryIndex index.php
  AddDefaultCharset UTF-8
  DocumentRoot /var/www/html/[DIRECTORY NAME]
  <Directory "/var/www/html/[DIRECTORY NAME]">
    Require all granted
  </Directory>
</VirtualHost>

 ↓

// 変更後
<VirtualHost *:80>
  ServerName example.com
  DirectoryIndex index.php
  AddDefaultCharset UTF-8
  DocumentRoot /var/www/html/[DIRECTORY NAME]
  
  // 下記4行を追記
  ServerAlias www.example.com
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www.example.com$
  RewriteRule ^/(.*) http://example.com/$1 [R=301,L]
  
  <Directory "/var/www/html/[DIRECTORY NAME]">
    Require all granted
  </Directory>
</VirtualHost>

 

複数サイトがある場合はそれぞれ同じように追記します。これでwwwのサブドメインURLにアクセスしてきちんとリダイレクトされるかどうかを確認します。

 

(参考)
さくらVPSでwwwありドメインを設定&wwwなしにリダイレクト

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?