Actualmente, htaccess niega a todos los usuarios. Solo quiero permitir que todos los usuarios puedan acceder al feed JSON de WordPress.
Desde la ubicación del archivo htaccess, la URL del feed es:
./row/wordpress/wp-json/wp/v2/screen
Pregunta
Por lo que tengo entendido, esta es una URL "virtual" creada mediante reglas de reescritura. Dado que no es un archivo real sino solo un punto final, ¿cómo puedo permitir que cualquier usuario acceda a él?
Intento actual
Aquí está mi intento actual que bloquea a todos los usuarios sin contraseña. Mi Files
nodo no hace 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
Pregunta
¿Cómo puedo hacer que la ruta virtual ./row/wordpress/wp-json/wp/v2/screen
sea visible para todos mis visitantes?
** editar **
Desde entonces he probado ambos
<Directory row/wordpress/wp-json/v2/>
Allow from All
</Directory>
<Location row/wordpress/wp-json/v2/>
Allow from All
</Location>
Sin éxito, ambos provocan un 501.
Respuesta1
Aquí hay dos enfoques diferentes para permitir que una única URL, ya sea que se refiera a un archivo físico o no, omita la autenticación de contraseña básica:
Opción 1: Permitir una única URL a través de la protección con contraseña:
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
Opción 2: aplicar protección con contraseña a todas las solicitudes que no coincidan con una URL específica (esta opción requiere 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>
Respuesta2
Debido a la naturaleza de la ruta virtual (creada por wordpress), tuve que usar THE_REQUEST
en su lugar:
<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
Allow from All
Satisfy Any
</If>
La redirección de WordPress utiliza, wordpress/index.php
por lo que el uso de REQUEST_URI
no funcionaba porque el URI siempre /path/to/wordpress/index.php
hace que la declaración my if sea inútil.
NOTA
Si necesita admitir PUT u otros, deberá agregarlos [A-Z]{3}
o [A-Z]{3-6}
donde este último se abrirá a todo.