バーチャルホストのサーバ名別名でVirtualHost設定を簡素に
ApacheにはServerAliasなるディレクティブがあります。
今更知ることになり、なんて便利なんだ!と感動したのでこの勢いで紹介します!
ServerAliasのない世界
よくあるパターンですが、URLにwwwを入れるか入れないか、どちらかに統一したいという話がよくあると思います。
私はこの設定を今までのこんな感じでやってました。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
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 [email protected]
DocumentRoot /srv/www/default
ServerName nautilus.xyz
...
</VirtualHost>
このケースでは、www.nautlus.xyz => nautilus.xyzにリダイレクトしています。wwwを削除する方向に統一。うーん、ザ・冗長。www.nautilus.xyzとnautilus.xyzの両方のバーチャルホスト設定を書いてます。wwwの方は使わないのにね…
いろいろ設定書くって事は、変更あったら両方とも修正しないといけないから修正漏れとか書き間違いとかトラブルの種がその分増えるって事。設定ファイルもプログラムも書かないに越したことはないよね。
そこでServerAliasくんの登場ですよ。
ServerAliasのある世界
ServerAliasを使うとこんな感じに書き換えることができます。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
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 からの転載です。
Author And Source
この問題について(バーチャルホストのサーバ名別名でVirtualHost設定を簡素に), 我々は、より多くの情報をここで見つけました https://qiita.com/Vit-Symty/items/eb7d98a1576e93b3b130著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .