Apache mesclando seções de localização (novamente)

Apache mesclando seções de localização (novamente)

Eu leioesta respostaa uma pergunta semelhante feita há algum tempo, e fazia sentido e correspondia à documentação do Apache 2.4. Mas tive a seguinte experiência, que parece contradizer essa resposta e a documentação. Considere as seguintes diretivas:

<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>

A intenção, claramente, é proteger todos os URLs com autenticação básica http,excetopara URLs abaixo /wp/feed. Mas depois de recarregar o Apache, fui solicitado a fornecer credenciais ao acessar o /wp/feed. Esse URL corresponde a ambos os caminhos de localização, então o apache deveria ter sido processado Require valid-userseguido por Require all grantede eu não deveria ter sido avisado. Apenas por "diversão", tentei mudar a ordem dos blocos de localização, mas ainda assim fui solicitado. A única coisa que descobri que funcionou como pretendia foi remover totalmente o bloco de localização de "/". Para mim, isso também foi um comportamento inesperado porque, nesse caso, não havia Require valid-usernenhuma diretiva que deveria ter sido aplicada a URLs que não correspondiam a /wp/feed. E ainda assim eles foram aplicados, pois fui solicitado a fornecer todos os URLs que não correspondiam /wp/feed.

Alguém pode explicar isso? Estou apenas perdendo o barco para entender a resposta edocumentação?

Não tive problemas em especificar esse comportamento com as diretivas nginx, onde a correspondência de prefixo mais longa geralmente vence. Se o que obtive realmente é o comportamento esperado, como posso conseguir o que quero com o Apache?

informação relacionada