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

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

最終更新日: 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なしにリダイレクト
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram