나는 읽었다이 답변얼마 전에 비슷한 질문이 제기되었는데, 이는 이해가 잘 되고 Apache 2.4 문서와 일치합니다. 그러나 나는 그 대답과 문서와 모순되는 것처럼 보이는 다음과 같은 경험을 했습니다. 다음 지시문을 고려하십시오.
<Directory "/opt/lampp/htdocs/foo">
AuthName "foo user"
AuthType Basic
Authuserfile /opt/lampp/passwds/foo.users
</Directory>
<VirtualHost *:80>
ServerName foo.example.com
DocumentRoot "/opt/lampp/htdocs/foo/public"
ErrorLog "logs/foo.error_log"
<Location />
Require valid-user
</Location>
<Location /wp/feed>
Require all granted
</Location>
CustomLog "logs/foo.access_log" combined
</VirtualHost>
분명히 의도는 http 기본 인증으로 모든 URL을 보호하는 것입니다.제외하고아래 URL의 /wp/feed
경우 하지만 아파치를 다시 로드한 후 /wp/feed
. 해당 URL은 두 위치 경로 모두와 일치하므로 apache가 처리 Require valid-user
된 뒤에 가 표시되어야 하며 Require all granted
메시지가 표시되지 않아야 합니다. 단지 "재미"를 위해 위치 블록의 순서를 바꾸려고 했지만 여전히 메시지가 표시됩니다. 내가 의도한 대로 작동했던 유일한 방법은 "/"에 대한 위치 블록을 완전히 제거하는 것이었습니다. 나에게 그것은 또한 Require valid-user
일치하지 않는 URL에 적용되어야 하는 지시문이 전혀 없었기 때문에 예상치 못한 동작이었습니다 /wp/feed
. 그러나 일치하지 않는 모든 URL에 대한 메시지가 표시되었으므로 적용되었습니다 /wp/feed
.
누구든지 이것을 설명할 수 있나요? 나는 대답을 이해하는 데 배를 놓치고 있습니까?선적 서류 비치?
일반적으로 가장 긴 접두사 일치가 승리하는 nginx 지시문을 사용하여 이 동작을 지정하는 데 문제가 없었습니다. 내가 얻은 것이 실제로 예상된 동작이라면 어떻게 아파치로 원하는 것을 얻을 수 있습니까?