Atualmente o htaccess está negando todos os usuários. Quero permitir que apenas o feed JSON do wordpress seja acessível a todos os usuários
No local do arquivo htaccess, o URL do feed é:
./row/wordpress/wp-json/wp/v2/screen
Pergunta
Pelo que entendi, este é um URL "virtual" criado por regras de reescrita. Como não é um arquivo real e apenas um endpoint, como permito que qualquer usuário o acesse?
Tentativa atual
Aqui está minha tentativa atual de bloquear todos os usuários sem senha. Meu Files
nó não faz nada.
// root folder's .htaccess
AuthUserFile /var/www/domains/dev/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user SecretUser
Order Deny,Allow
Deny from All
<Files "row/wordpress/wp-json/wp/v2/screen">
Allow from all
</Files>
Satisfy Any
Pergunta
Como posso fazer com que o caminho virtual ./row/wordpress/wp-json/wp/v2/screen
fique visível para todos os visitantes?
**editar**
Desde então, tentei os dois
<Directory row/wordpress/wp-json/v2/>
Allow from All
</Directory>
<Location row/wordpress/wp-json/v2/>
Allow from All
</Location>
Sem sucesso, ambos causam um 501
Responder1
Aqui estão duas abordagens diferentes para permitir que um único URL, seja ele referente a um arquivo físico ou não, ignore a autenticação básica por senha:
Opção 1: Permitir um único URL através da proteção por senha:
AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/domains/dev/.htpasswd
Require expr %{REQUEST_URI} == '/row/wordpress/wp-json/wp/v2/screen'
Require user SecretUser
Opção 2: aplique proteção por senha a todas as solicitações que não correspondam a um URL específico (esta opção requer Apache 2.4):
<If "%{REQUEST_URI} != '/row/wordpress/wp-json/wp/v2/screen'">
AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/domains/dev/.htpasswd
Require user SecretUser
</If>
Responder2
Devido à natureza do caminho virtual (criado pelo wordpress), tive que usar THE_REQUEST
:
<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
Allow from All
Satisfy Any
</If>
O redirecionamento do wordpress usa wordpress/index.php
então o uso do REQUEST_URI
não estava funcionando porque o uri está sempre /path/to/wordpress/index.php
tornando a instrução my if inútil.
OBSERVAÇÃO
Se você precisar oferecer suporte a PUTs ou outros, terá que adicioná-los. [A-Z]{3}
Ou [A-Z]{3-6}
onde o último se abrirá para tudo.