ローカル環境で複数のドメインを管理する方法

バーチャルホストを利用すれば、同一サーバ上で

  • http://localhost/
  • http://test.localhost/

のようなアクセスが可能となります。

Apacheの設定

設定ファイルを開き、名前ベースのバーチャルホストでリクエストを受け付けるIPアドレスを指定します。

NameVirtualHost *:80

Apache 2.3.11以降、このNameVirtualHostによる指定は不要で、指定しても「AH00548: NameVirtualHost has no effect and will be removed in the next release」として無視されます。 NameVirtualHost Directive - core - Apache HTTP Server Version 2.4 Common problems when upgrading - Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4

次にVirtualHostディレクティブを使用し、個々のドメインを定義します。DcumentRootで参照させるローカルのパスを指定し、ServerNameでホスト名を設定します。

<VirtualHost *:80>
    DocumentRoot "C:/localhost"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/localhost/test"
    ServerName test.localhost
</VirtualHost>

設定を反映させるためには、Apacheを再起動します。

DNSの設定

先のServerNameで設定した名前でローカルのURLを参照できるように、Hostsファイルを編集します。

このHostsファイルとはOSのシステムファイルの一つで、TCP/IPネットワーク上のIPアドレスとホスト名の対応を記述するテキストファイルです。Windows NT系では、%WINDIR%/system32/drivers/etcにあるファイルがそれにあたります。Hostsファイルとは 【Hosts file】 - IT用語辞典

たとえば先のドメインに対応させるには、

127.0.0.1 localhost
127.0.0.1 test.localhost

のように記述します。

このファイルを編集すると、保存時に「この場所に保存するアクセス許可がありません。管理者に連絡してアクセス許可を取得してください。」とエラーとなることがあります。

このときには、管理者としてファイルを開きます。

Hostsファイルの初期値

以下は、Windows 10のHostsファイルの既定値です。すべてコメントアウトされており、何も機能しません。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#      127.0.0.1       localhost
#      ::1             localhost
How can I reset the Hosts file back to the default?