Apache 2.4 отрицание SetEnvIf переменная env не работает для конкретного Request_URI - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь сделать следующее в моем .htaccess файле:

SetEnvIf Host sub.example.com passreq
SetEnvIf Request_URI "^\/[a-z]{2}-[a-z]{2}\/.+$" !passreq
SetEnvIf Request_URI "^(.*)/(.+)\.(jpg|jpeg|gif|png|svg|js|css|ico|ttf|eot|ot|rtt|woff|woff2)$" !passreq

Когда установлено passreq У меня базовая аутентификация, запускаемая с помощью:

AuthType Basic
AuthName "Password Required" 
AuthUserFile /<path>/.htpasswd
Require user example
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any

1) Так что я ожидаю, что смогу получить доступ к таким ресурсам, как:

https://sub.example.com/assets/img/example.png

2) И я ожидаю, что смогу получить доступ к таким маршрутам, как:

https://sub.example.com/de-de/some-path.html

3) И я ожидаю получить базовую аутентификацию для чего-то вроде:

https://sub.example.com/index.html

Ожидания 1 и 3 верны, но номер 2 нене работает. При попытке доступа https://sub.example.com/de-de/some-path.html блокируется с помощью базовой аутентификации.

Похоже, что SetEnvIf Request_URI "^\/[a-z]{2}-[a-z]{2}\/.+$" !passreq не отменяет переменную env passreq, установленную SetEnvIf Host sub.example.com passreq.

В чем может быть моя ошибка?

...