公開前やメンテ中、検索のRobotに拾われたり閲覧できないようにするのにベーシック認証は手軽でよく使う方法です。
<Location / >
AuthType Basic AuthName "Input ID " AuthUserFile /var/www/.htpasswd Require user foo
</Location>
サイトを制作途中に、公開前にSSLのLet's Encryptだけは先に通しておきたい場合があります。ただ上記のベーシック認証をかけていると承認に失敗します。
それは、承認用にアップロードしたファイルがリターンで読み取れないために失敗するので、アップロードしたファオルの部分だけベーシック認証をエスケープする必要があります。
<Location /.well-known/acme-challenge >
Require all granted
</Location>
Let's Encryptが使うパスだけは、接続をすべて許可します。
場合のよっては、リファラーやブラウザなど
SetEnvIfで、複雑な認証を設けている場合もあるでしょう。
SetEnvIf Host "^subdomain\." host_ok order deny,allow deny from all allow from env=host_ok
そういった場合も、Request_URIで該当のURLだけ認証を通します。
SetEnvIf Host "^subdomain\." host_ok SetEnvIf Request_URI "/.well-known/acme-challenge*" ref_ok order deny,allow deny from all allow from env=host_ok
それにより認証や更新も問題なく運用できます。