2016-10-17 8 views
0

は、私は私の.htaccessファイル.htaccessファイルの.htpasswdへのパスをどのようにパラメータ化するか?

AuthUserFile ./.htpasswd 
AuthGroupFile /dev/null 
AuthName "Dev Area One" 
AuthType Basic 

<Limit GET> 
require valid-user 
</Limit> 

Apacheが、それはファイル/etc/apache2/.htpasswdを見つけることができないと言うので、これは、500内部サーバーエラーが発生し、次のコードを持っています。これは、.htpasswdがディレクトリ/var/www/html/dev1.staging.com/public_html/.htpasswdにあり、私の.htaccessが/var/www/html/dev1.staging.com/public_html/.htaccessにあるからです。

他のチームメンバーが自分のdevのサーバーへのgit pull origin masterを行うたびに、.htaccessファイルが正常に.htaccessと同じディレクトリにある必要があり.htpasswdのを参照するように?私はAuthUserFile SOMEVARIABLE+.htpasswdAuthUserFile ./.htpasswdを置き換えることができますか

これはまさに開発のためのものです。ファイルの書き込みアクセス権がないサーバーもあります(その中には共有ホスティングがあります)。そのため、私たちのWebプロジェクトがどのディレクトリに配信されているのかわからないので、 .htpasswdへのディレクトリパス。

+0

.htpasswdファイルへの絶対パスを使用します。どうしてそんなことはできないの? –

+0

@PanamaJackどのように絶対パスを決定しますか?クライアントサーバーにSFTPまたはシェルがありません。クライアントはステージングサーバー上のファイルを手動で変更することを拒否します。 – John

+0

あなたはすでにそれを持っています。 'AuthUserFile/var/www/html/dev1.staging.com/public_html/.htpasswd'そのようにしてください。私は完全な道を使い、それは常に私のために働く。 –

答えて

0

あなたはPassEnv directiveを使用してAuthUserFileへのパスにシェル環境変数を使用することができます。

PassEnv HOME 

AuthUserFile ${HOME}/.htpasswd 
AuthGroupFile /dev/null 
AuthName "Dev Area One" 
AuthType Basic 

<Limit GET> 
require valid-user 
</Limit> 

スニペットの上には直接$HOMEディレクトリの下にのみ、各ユーザの店.htpasswd場合に動作します。

+0

ありがとう、これは将来を知るのに便利です。残念ながら私の現在の状況では、 '.htpasswd'は常に' $ HOME'ディレクトリにあるとは限りません。それはサーバによって異なります – John

+0

そして、あるサーバから別のサーバに制御できる他の変数を使ってみてください。これは、AuthUserFileで変数を使用する場合にのみ可能です。そうでない場合は、ハードコーディングされたパスを使用します。 – anubhava

関連する問題