matsuo
テスト環境ではBasic認証をかけ、本番環境では外したい (ただし同じ .htaccess ファイルで)
Basic認証の話なんですが
- テスト環境にはBasic認証をかけたい。
- 本番環境ではBasic認証は外したい。
- ローカル環境もBasic認証かけたくない。
- ただし、なんらかの事情により .htaccess ファイルは共通の内容にしたい。
という場合の、対処方法です。
(納品やコード管理上の都合で、.htaccess ファイルを環境ごとに変えられない場合もありますので……)
記述例
以下のような .htaccess ファイルを書くと、接続先のホスト名によってBasic認証の有無が変わります。
この例では、接続先が www.example.com
または localhost
の場合は認証なし、その他のホスト名の場合は認証ありとなります。
説明
8行目: SetEnvIf Host 〜
の部分で接続先ホスト名を判断し、マッチした場合は noAuth
という環境変数を設定しています。
9行目: Allow from env=noAuth
は、その環境変数が設定されていれば接続を許可する、という記述です。
この2行のセットにより、特定のホスト名の場合はBasic認証なしで接続できるようにしました。
もう1つポイントは 5行目の Satisfy Any
で、これは「ホスト名かBasic認証のどちらかでアクセスできる」という設定をしています。この行がないと意図したとおりに動きません。(デフォルトは Satisfy All
で、その場合「ホスト名とBasic認証の両方をクリアしないとアクセスできない」となります)
12行目以降は、いつもどおりの Basic認証の記述です。
余談ですが、Apache の SetEnvIf
は User-Agent やリファラでの判定も可能なので、特定ブラウザからのアクセスに対して〜とか特定URLからのアクセスに対して〜、とかで処理を分けることもできるようですね。
参考
Apache ドキュメンテーションの以下の項目