リダイレクトのconf設定が効かない問題で2日溶かした【Apache】

2024年8月3日

/etc/httd/conf.d/vhost/配下にある、
ルートドメイン(example.com)をサブドメイン(blog.example.com)にリダイレクトさせる設定をconfのvirtualhostに書いたのに、なぜか設定が有効にならずに莫大な時間を溶かした

ログを見ると以下のようなエラーが出る

[Sat Aug 03 02:38:21.563571 2024] [authz_core:error] [pid 169237:tid 140387540772608] [client 162.158.118.117:43298] AH01630: client denied by server configuration: /etc/httpd/htdocs
[Sat Aug 03 02:38:21.604086 2024] [authz_core:error] [pid 169237:tid 140387893102336] [client 172.68.85.133:15450] AH01630: client denied by server configuration: /etc/httpd/htdocs, referer: https://example.com/

/etc/httpd/htdocsとかドキュメントルートにしてないし、
chown,chmodでちゃんと権限周りも設定したのに、
他のドメインでは同じ設定でうまく行っててどうしてexample.comだけダメなのか本当に謎

結論 http.confのIncludeの順番を入れ替える

❌だめだった設定

# Load config files in the "/etc/httpd/conf.d" directory, if any.
Include conf.d/*.conf
Include conf.d/vhost/*.conf

⭕ うまくいった設定

# Load config files in the "/etc/httpd/conf.d" directory, if any.
Include conf.d/vhost/*.conf
Include conf.d/*.conf

試行錯誤の結果、httpd.confに設定したconfファイルのロードの順番を入れ替えると、見事にエラーが解決した

00をconfファイル名の頭につけて同一ディレクトリ内でのロード順序を変えるのは知ってたけど、
こんな設定の落とし穴があるとは知らなかったので勉強になった

conf.d/*confに何らかのSSL用の設定があって邪魔をしていたのだろうか
時間がなくてちゃんと原因を特定できてないので、今後の課題にしたい