すべてのサイトが同じドキュメントルートを持つマルチ ドメイン サイト (カスタム CMS) を持っています。URL(ドメイン)に応じて、別のサイトを提供します。ルートが 1 つしかないため、.htaccess も 1 つしかありません
今、単純な .htacess ログインで 1 つのドメインを保護したい (このように)
このログインを 1 つのドメインに指定するにはどうすればよいですか?
mod_setenvifサポートを使用して、ドメインの 1 つだけを保護できます。.htaccess
共通の下に配置する必要があるコードは次の$DOCUMENT_ROOT
とおりです。
SetEnvIfNoCase Host ^www\.subdomain\.com$ SECURED=yes
AuthType Basic
AuthName "My Protected Area"
AuthUserFile /your/path/to/passwords
Require valid-user
Satisfy any
Order allow,deny
Allow from all
Deny from env=SECURED
www.subdomain.com
上記のコードは、他のドメインを開いたままにしている間のみ、基本認証ポップアップを表示します。
ファイルを有効にするには.htpasswd
、その保護されたドメインの特定のサブディレクトリを使用する必要があります。トリックは、たとえば%{HTTP_HOST}
、docroot ファイルの変数に基づいて、サブドメインベースの内部リダイレクトを使用することです。.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} =admin.example.com
RewriteRule ^(?!admin).* admin/$0 [L]
htttp://admin.example.com/
これにより、独自のファイルを持つことができる DOCROOT/admin サブディレクトリへの参照.htaccess
が内部的にリダイレクトされ.htpasswd
ます。
シンボリック リンクと CMS エントリ スクリプトおよびサブディレクトリを共有インスタンスに戻す必要がある場合があります。 これは、phpBBでこれを行った方法です。