Apache 인증 : 하위 디렉토리에 대한 공개 액세스 허용


13

이것은 아마도 간단한 문제이지만 설명서에서 해결책을 찾을 수 없습니다.

BASIC 인증을 사용하여 웹 사이트를 비밀번호로 보호하고 싶습니다. 그러나 하위 디렉토리를 보호하지 않기를 원합니다.

http://mysite.com/ -> BASIC protected
http://mysite.com/somedir -> BASIC protected
http://mysite.com/someotherdir -> BASIC protected
http://mysite.com/public -> not protected

모든 사이트를 보호하는 데 아무런 문제가 없지만 한 디렉터리를 "보호 해제"할 수있는 방법을 모르겠습니다. 이 사이트는 공유 호스트에서 호스팅되므로 구성을 수행하기 위해 .htaccess 파일에만 액세스 할 수 있습니다.

인증을 무효화하는 지시어가 있습니까?

도와 주셔서 감사합니다 ...


이것이 가장 올바른 해결책 인 것 같습니다 : stackoverflow.com/questions/2641646/…
BryanK

답변:


10

호스트가 허용 한 내용에 따라 .htaccess에 문제가 없어야합니다.

다음과 같이 하위 폴더에 .htaccess를 넣을 수 있습니다. 디렉토리에있는 재정의를 사용하도록 설정해야합니다.

 Allow From All
 Satisfy Any

1
여기 IIRC의 비밀 소스는 .htaccess를 사이트의 루트에 배치하지만 Cylindric이 말하는 것과 같은 .htaccess 파일에 항목을 넣는 것입니다.
Paul Lathrop

그리고 .htaccess가 사용되도록 AllowOverride를 추가하거나 존재하는지 확인하는 것을 잊지 마십시오.
TCampbell

1
@Paul-답변을 삭제했지만 AFAICR Cylindric의 답변이 현재 잘못 되었습니까? 서브 디렉토리의 .htaccess 파일은 상위 디렉토리를 겹쳐 쓸 수 없습니다. 그러나 상위 디렉토리의 .htaccess 파일은 하위 디렉토리에 대한 제어를 포함하거나 실제로 제거 할 수도 있습니다.
Alnitak

루트 폴더와 공개 폴더에 <Directory /> 지시문을 둘 다 시도했지만 두 경우 모두 HTTP 500을 얻습니다. 다른 아이디어는 무엇입니까?

1
<Files>와 <Location>을 사용할 수 있지만 .htaccess에서 <Directory>를 사용할 수 없습니다.
Alnitak

7

server.com/private/public 경로의 경우 :

server.com/private/.htaccess

AuthType Basic
AuthName "Private, keep out."
Require...

server.com/private/public/.htaccess

Allow From All
Satisfy Any

여기서 핵심은 'Satisfy Any'이며 요구 사항을 업스트림에서 함께 처리합니다. 'Satisfy All'이 기본값입니다.


'Satisfy Any'를 설명해 주셔서 감사합니다 👍
Mario

1

나는 이것이 그렇게 할 수 있다고 믿는다.

# put the global auth stuff here
...

# put the override here
<Location /public>
Allow from All
Satisfy Any
</Location>

액세스 제어에 <Location>을 사용하는 것은 좋은 생각이 아닙니다. 리소스 자체가 아닌 이름을 통한 액세스 만 제어합니다. 따라서 다른 이름 (예 : Alias)을 통해 액세스 할 수있는 항목에는 액세스 제어가 적용되지 않습니다.
CK.

1
@CK 문제의 위치가 실제 디렉토리가 아니라 mod_rewrite와 같이 가장 한 "가상"디렉토리 인 경우 실제로 위치를 사용해야합니다.
Natalie Adams

0

나는 이것을하여 이것을 해결했다.

<Directory "/path/to/maindirectory">
[... auth stuff ... ]
</Directory>

<Directory "/path/to/mysubdirectory">
 Allow from All
 Satisfy Any
</Directory>

위치는 대소 문자를 구분하고 실제 폴더 액세스에는 영향을주지 않고 URL을 통해서만 작동하므로 위치를 사용하지 마십시오.

예를 들어 내가 쓰면

http:/mywebsite/STUFF

또는

http://mywebsite/stuff

또는

http://mywebsite/StUfF

호출 된 실제 디렉토리가 동일하더라도 위치 제어는 다릅니다!

요컨대, "stuff"디렉토리에 대한 액세스를 확인하면 다른 경우로 작성할 수 있습니다.

또한 다른 사람의 위치 제어 기능이있는 단일 디렉토리에서 .htaccess 파일을 사용하면 나에게 도움이되지 않았습니다.

도움이 되길 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.