Apacheでメンテ画面を表示する際にはまったこと

てっきり、httpd.confに設定を入れてしまえば、全体に同じように設定できると勘違いしていました。

が、VirtualHostが設定されているサイトについては、VirtualHostディレクティブ内で設定しないと動かないみたいです。

今まで意識してなかったので、はまってしまいました。

<VirtualHost *:80>
  ServerName sample.local
  DocumentRoot /var/www/html

  <Directory /var/www/html>
    Require all granted
    AllowOverride all
  </Directory>

  ErrorDocument 503 /maintenance.html
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.html
  RewriteRule ^.*$ - [R=503,L]
</VirtualHost>

<VirtualHost *:443>
  ServerName sample.local
  DocumentRoot /var/www/html

  <Directory /var/www/html>
    Require all granted
    AllowOverride all
  </Directory>

  SSLEngine On
  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  ErrorDocument 503 /maintenance.html
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/maintenance.html
  RewriteRule ^.*$ - [R=503,L]
</VirtualHost>

httpとhttpsそれぞれでアクセスできるように設定していますが、それぞれ記載しないと動きませんでした。

※80番ポート(HTTP)の方も、httpd.confや、VirtualHostの外に記載しても動きませんでした。

ただし、今は、httpsでの接続がほぼ必須になっているので、httpは一度httpsへリダイレクトするなりの設定のほうがよいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です