.htaccess と Apache 2.2 を使用して、テスト サイト/ホストへのアクセスを制御しようとしていますが、運用サイトへのアクセスは制御していません。mod_rewrite を使用してホスト名を検出し、サイトのさまざまな側面を制御するために使用されるいくつかの環境変数を設定していますが、これを利用してアクセスを制御することはできません。mod_setenvif でしかアクセスを制御できません。
ホストを検出し、環境変数を設定できます。(簡略化されています。)
RewriteCond %{HTTP_HOST} test\..*
RewriteRule ^ - [ENV=requireAuth:1,ENV=...]
その後、アクセスを制御するためにそれを使用しようとします。
AuthType Basic
AuthName "Authentication Required"
AuthUserFile /file/location/.htpasswd
Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=!requireAuth
これは動作しません。否定 (!) を削除すると、すべてのサイトに受け入れられないパスワードが強制されます。
mod_setenvif を使用していくつかのバリエーションを試しましたが、requireAuth2 のみが機能します。
SetEnvIf HOST "test.+" requireAuth2
SetEnvIf requireAuth ".+" requireAuth3
SetEnvIf %{ENV:requireAuth} ".+" requireAuth4
phpinfo() を使用してリクエストをダンプすると、requestAuth と requestAuth2 のみが表示されます。
多くの異なるホスト名と多くの異なる環境変数があるため、ホスト チェック ロジックをやり直す必要はありません。また、アクセスをデフォルトにして単一の env=! を持つというアイデアも気に入っています。テスト。アクセスを拒否するのではなく、アクセスを許可するときにエラーが発生します。
助言がありますか?
ありがとう、ウェス。