バーチャルホストを設定するときにいくつかエラーが発生し400 Bad Requestがでたので対処法
- 環境 CentOS 7 Apache 2.4.6
httpd -S
でエラー確認
[root@ip-**-**-**-** ]# httpd -S AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1 AH00112: Warning: DocumentRoot [/var/www/virtual] does not exist VirtualHost configuration: *:80 is a NameVirtualHost default server sample_test.jp (/etc/httpd/conf.d/vhost.conf:3) port 80 namevhost sample_test.jp (/etc/httpd/conf.d/vhost.conf:3) port 80 namevhost sample_virtual.jp (/etc/httpd/conf.d/vhost.conf:8)
エラー1
「NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1」
→ NameVirtualHost *:80 の記述を削除
apache2.4以降ではデフォルトでNameVirtualHost *:80が記載されているので、別の設定ファイルに書く必要がない
vhost.confに
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/sample.myhost.com ServerName sample.myhost.com </VirtualHost>
と記載しているのを下記に変更
<VirtualHost *:80> DocumentRoot /var/www/html ServerName sample_test.jp </VirtualHost>
これで解決
エラー2
「Warning: DocumentRoot [/var/www/virtual] does not exist」
→ 権限を与える
ドキュメントルートが存在しないというエラーが出ているので、存在するか調べる
# ls -la /var/www/virtual
の結果で、ディレクトリがない場合、作成する ディレクトリが存在している場合、権限がないことが原因なので権限を与える
# cd /var/www # chown apache:apache virtual
これで解決
エラー3
「上記を解決させてもアクセスしたら 400 Bad Request になる」
→ ホスト名にアンダースコアを使わない
Apache2.4.25以降ではホスト名にアンダースコアを使うとエラーになるらしい ホスト名をsample_test.jpからsample-test.jpに変更して解決