14
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バーチャルホストのサーバ名別名でVirtualHost設定を簡素に

Last updated at Posted at 2016-06-01

ApacheにはServerAliasなるディレクティブがあります。
今更知ることになり、なんて便利なんだ!と感動したのでこの勢いで紹介します!

ServerAliasのない世界

よくあるパターンですが、URLにwwwを入れるか入れないか、どちらかに統一したいという話がよくあると思います。
私はこの設定を今までのこんな感じでやってました。

httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
 ServerAdmin   admin@nautilus.xyz
 DocumentRoot /srv/www/default
 ServerName   www.nautilus.xyz
 <ifModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^www.nautilus.xyz
   RewriteRule ^(.*)$ http://nautilus.xyz%{REQUEST_URI} [R=301,L]
 </ifModule>
 ...
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin  admin@nautilus.xyz
 DocumentRoot /srv/www/default
 ServerName   nautilus.xyz
 ...
</VirtualHost>

このケースでは、www.nautlus.xyz => nautilus.xyzにリダイレクトしています。wwwを削除する方向に統一。うーん、ザ・冗長。www.nautilus.xyzとnautilus.xyzの両方のバーチャルホスト設定を書いてます。wwwの方は使わないのにね…
いろいろ設定書くって事は、変更あったら両方とも修正しないといけないから修正漏れとか書き間違いとかトラブルの種がその分増えるって事。設定ファイルもプログラムも書かないに越したことはないよね。

そこでServerAliasくんの登場ですよ。

ServerAliasのある世界

ServerAliasを使うとこんな感じに書き換えることができます。

httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
 ServerAdmin  admin@nautilus.xyz
 DocumentRoot /srv/www/default
 ServerName   nautilus.xyz
 ServerAlias  www.nautilus.xyz
 <ifModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^www.nautilus.xyz
   RewriteRule ^(.*)$ http://nautilus.xyz%{REQUEST_URI} [R=301,L]
 </ifModule>
 ...
</VirtualHost>

バーチャルホストの設定を一つにまとめることができるわけです。
基本的に、nautilus.xyzのバーチャルホストとして、この設定を使う別のドメインをServerAliasとして設定しておきます。そして、ServerAliasのドメインでアクセスしてきたリクエストはnautilus.xyzにリダイレクト。

設定が一つになって、すっきり!うれしい!

こんなこと誰でも知ってるよ!ということかもしれないけど、これは便利だとおもいましたまる

http://nautilus.xyz/dev/157 からの転載です。

14
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?