В настоящее время 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
Вот два разных подхода, позволяющих одному 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>
Из-за характера виртуального пути (созданного 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}
где последний откроется всему.