htaccess разрешить определенный путь

htaccess разрешить определенный путь

В настоящее время htaccess запрещает всем пользователям. Я хочу разрешить только JSON-канал из WordPress быть доступным для всех пользователей

Из расположения файла htaccess URL-адрес канала следующий:

./row/wordpress/wp-json/wp/v2/screen

Вопрос

Насколько я понимаю, это "виртуальный" URL, созданный правилами перезаписи. Поскольку это не фактический файл, а просто конечная точка, как мне разрешить любому пользователю получить к нему доступ?

Текущая попытка

Вот моя текущая попытка, которая блокирует всех пользователей без пароля. Мой Filesузел ничего не делает.

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

Вопрос

Как сделать так, чтобы виртуальный путь ./row/wordpress/wp-json/wp/v2/screenбыл виден всем моим посетителям?

** редактировать **

С тех пор я попробовал оба варианта.

<Directory row/wordpress/wp-json/v2/>
    Allow from All
</Directory>

<Location row/wordpress/wp-json/v2/>
    Allow from All
</Location>

Не имея успеха, они оба вызывают 501

решение1

Вот два разных подхода, позволяющих одному URL-адресу, независимо от того, ссылается ли он на физический файл или нет, обойти базовую аутентификацию по паролю:

Вариант 1: разрешить защиту одного URL-адреса паролем:

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

Вариант 2: Применить защиту паролем ко всем запросам, которые не соответствуют определенному URL-адресу (для этого варианта требуется 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>

решение2

Из-за особенностей виртуального пути (созданного WordPress) мне пришлось использовать THE_REQUESTвместо этого:

<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
        Allow from All
        Satisfy Any
</If>

Перенаправление WordPress использует , wordpress/index.phpпоэтому использование REQUEST_URIне работает, поскольку URI всегда /path/to/wordpress/index.phpделает оператор my if бесполезным.

ПРИМЕЧАНИЕ

Если вам нужна поддержка PUT или чего-то еще, вам придется это добавить. [A-Z]{3}или [A-Z]{3-6}где последнее будет открыто для всего.

Связанный контент