2011-04-30 9 views
8

내 호스팅에 내 사이트 (dev, stage, production)가 여러 개 배치되어 있습니다. htaccess 파일에 HTTP Auth 헤더를 추가하는 방법은 설정 한 환경 변수가 'dev'와 같은 경우에만 해당합니까? (액세스하려는 사이트에 따라 dev, stage 또는 prod가 될 수있는 SITE_ENVIRONMENT 변수를 설정한다는 의미)조건부로 아파치 env 변수에 따라 HTTP 인증이 필요합니다.

추신 : 나는 htaccess의 승인을 바닐라 방식으로 요구하는 것에 익숙하지만 전적으로 ..이 변수를 평가 또는 결과에 따라 블록을 쓰기에 올 때 손실

+0

관련 질문 : * [조건부 htaccess로 비밀번호를 수행하는 방법에 보호] (http://stackoverflow.com/q/5252330/195835) * –

답변

0

나는이 가능하다 확실하지 않다

Theoreticaly, 당신은 사용할 수 있습니다

RewriteCond %{ENV:SITE_ENVIRONMENT} ^dev$ 

을하는 환경을 결정하는 너는 들어갔지 만 할 수있어. 기본 인증을 처리하는 다른 페이지로 리디렉션되지 않고 SITE_ENVIRONMENT 변수를 "dev-authenticated"또는 무언가로 재설정하지 않는 한 RewriteRule을 작성하여 기본 인증을 강제 수행하는 방법을 생각하지 마십시오.

+1

내가 채팅에 의해를 확인 아파치 개발자. 기본 인증을 트리거하는 RewriteRule을 작성할 수있는 방법이 없으므로 다른 접근 방식을 생각해야합니다. – iandouglas

+0

아, 답장을 보내 주셔서 감사합니다. 이것을 게시 한 후, 나는 나의 접근 방식을 재고했다. 그리고 다른 환경이 svn 저장소에서 배포되었으므로, 나는 dev 사이트 지점을 만들었다. – Jay

16

SetEnvIf를 사용하여 도메인 패턴을 일치시키고 사용할 환경을 결정할 수 있습니다.

SetEnvIfNoCase Host ^dev.domain.com$ is_on_dev_site 

AuthType Basic 
AuthName "Protected Login" 
AuthUserFile /path/to/.htpasswd 
AuthGroupFile /dev/null 
Require valid-user 
Deny from env=is_on_dev_site 
#allow something like API usage to bypass 
SetEnvIf Request_URI "(/api/.(.*))$" allow 
Order deny,allow 
Allow from env=allow 
Satisfy any 

남자 : http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html

관련 문제