2016-10-17 1 views
0

나는 나의 htaccess로 파일.htaccess 파일에서 .htpasswd의 경로를 매개 변수화하는 방법은 무엇입니까?

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

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

아파치는 파일 /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를 대체 할 수 있습니까?

이것은 개발 목적으로 만 사용되었습니다. 우리는 파일 쓰기 권한이없는 일부 서버 (일부는 공유 호스팅)가 있으므로 우리 웹 프로젝트가 어떤 디렉토리에 제공되는지 즉시 알지 못하기 때문에 미리 알 수 없습니다. .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