Apache

Apache 2.4.25 以降でホスト名のアンダースコアで 400 が出る場合の対処方法

Apache の 2.4 系では、ホスト名にアンダースコア( _ )が含まれるパターンがバージョン 2.4.25 より禁止されました。

そもそも、 RFC 的にアンダースコアはドメイン名に含むことができないものとされていますが、バージョンの低い Apache ではそれに反してアンダースコアを許容する形になっていました。 その制限が Apache 2.4.25 で見直され(適用されるようになり)、アンダースコアを含んだドメインでウェブコンテンツを提供しようとすると 400 Bad Request が出るようになります。

私はローカルの開発環境でちょうどアンダースコアを含むドメイン名を使ってしまっており、この問題に遭遇しました。

解決方法は主に次の 2 通りの方法になります。

Apache の設定ファイルにエラーがないか確認する方法

Apache の設定ファイルにエラーがないかを確認するには次の 2 つのコマンドのいずれかを使用します。

 $ httpd -t

 $ apachectl -t

問題のない場合は Syntax OK という文言が標準エラーに返ってきます。

httpdapachectl のどちらが使えるかは Linux のディストリビューションによるかと思いますのでコマンドの存在チェックをしてから行うのがよいかと思います。