2012-01-04 2 views
6

의 요청 때 다음의 .htaccess 파일이 "인증 필요"하기 모든 것이 잘 작동하고 인증 프롬프트없이 index.php가 표시됩니다. 그러나 "IP-ADDRESS /"를 요청하자마자 브라우저가 내 자격 증명을 요청합니다.는/대신 내 서버에 /index.php

왜 이런 경우입니까? 내가 뭘 놓치고 있니?

+0

와우 당신은 나와 똑같은 문제와 설정을 가지고 있었는데, 어쨌든 우연의 일치 –

답변

7

블록을 교체하여 mod_setenvif를 사용하여 <Files> 대신 요청 URI를 확인하십시오. mod_auth * 모듈은 mod_dir보다 우선권을 가지므로 /에서 /index.php까지의 매핑은 auth가 수행 될 때까지 발생하지 않습니다. Mod_setenvif는 인증 전에 발생합니다. 시도 :

SetEnvIf Request_URI "^/$" allow=yes 
SetEnvIf Request_URI "^/index.php$" allow=yes 

AuthType Basic 
AuthName "Password Required" 
AuthUserFile /var/www/webinterface/.htpasswd 
Options +FollowSymLinks 
Order Deny,Allow 
Satisfy any 
Deny from All 
Require valid-user 
Allow from env=allow 

을 요청 URI가 정확히 / 또는 /index.php 경우, 변수 allow가 설정됩니다. Auth 라인 이후의 내용은 변수 allow이 설정된 경우 유효한 사용자 또는을 제외한 모든 것을 거부한다고 말합니다.

+0

와우, 나는 깊은 인상을 받았습니다. 그것은 위대한 anser이었다. 고맙습니다. – ftiaronsem

+0

AuthType으로 시작하는 블록을 , 또는 등의 지침에 넣지 않아도됩니까? –

+0

이 문제를 어떻게 해결할 수 있는지 이해할 수 있습니까? 암호 보호 기능이없는 디렉토리 내의 모든 파일과 하위 디렉토리에 대한 액세스를 허용하고 싶지만/또는 /index.php에 비밀번호 인증을 요구하고 싶습니다. index.php 파일을 암호로 보호 할 때 암호없이 액세스 할 수 있습니다. 위의 답변을 위의 역방향 및 내 경우 작동하도록 필요한 규칙이 들어 있지만 SetEnvIf 등 그것을 작성하는 데 충분히 이해하지 않는다고 생각합니다. – WilliamAlexander