htaccess permite caminho específico

htaccess permite caminho específico

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 Filesnó 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/screenfique 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.phpentão o uso do REQUEST_URInão estava funcionando porque o uri está sempre /path/to/wordpress/index.phptornando 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.

informação relacionada