VirtualHostのページにlocalhost (127.0.0.1)以外からアクセスしたら404エラーになる場合

カテゴリ:Webサーバ

ApacheでVirtualHostを設定しているconfファイルのServerNamelocalhostではなく実際のサーバー名を指定してください。これは Apacheの仕様として、デフォルト以外のVirtualHostはServerNameと一致するホスト名のみリダイレクトの対象とするためです。

もし検証環境などでServerNameをlocalhostのままにしておきたい場合は、以下のコマンドでデフォルトの 000-default.conf を無効にします。(000-default.conf を使用していない場合)

# a2dissite 000-default.conf
# systemctl reload apache2

なお、VirtualHostにおけるServerNameの振る舞いは、000-default.conf 内にコメントとして記載されています。

The ServerName directive sets the request scheme, hostname and port that the server uses to identify itself.
This is used when creating redirection URLs. In the context of virtual hosts, the ServerName specifies what hostname must appear in the request's Host: header to match this virtual host. For the default virtual host (this file) this value is not decisive as it is used as a last resort host regardless.
However, you must set it for any further virtual host explicitly.
日本語訳:
ServerName ディレクティブは、サーバーが自身を識別するために使用するリクエスト スキーム、ホスト名、およびポートを設定します。これはリダイレクト URL を作成するときに使用されます。
仮想ホストのコンテキストでは、ServerName は、この仮想ホストと一致するために、リクエストの Host: ヘッダーにどのホスト名が表示される必要があるかを指定します。デフォルトの仮想ホスト (このファイル) の場合、最終手段のホストとして使用されるため、この値は決定的なものではありません。
ただし、それ以降の仮想ホストに対しては明示的に設定する必要があります。

公開日時:2023年11月11日 15:55:42
最終更新日時:2023年11月11日 16:00:20

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

Webサーバに戻る

このページのトップに戻る