Apache (2.4) RequireAny с REQUEST_URI
Я пытался заставить это работать и не знаю, где это идет не так.
В конфигурации Apache у меня есть следующий раздел:
<Directory /var/www/html/>
AuthType Kerberos
AuthName "Login"
KrbMethodNegotiate on
KrbMethodK5Passwd on
KrbAuthRealms EXAMPLE.LOCAL
KrbServiceName HTTP/example.local@EXAMPLE.LOCAL
Krb5KeyTab /etc/httpd/conf/http.keytab
<RequireAny>
Require valid-user
Require local
Require ip 192.168.2.190
Require expr %{REQUEST_URI} =~ m#/my/InvalidCredentials#
Require expr %{REQUEST_URI} =~ m#/my/PublicPage/*#
</RequireAny>
</Directory>
Страницы, которые я пытаюсь исключить из аутентификации, выглядят так:
Все, кроме операторов Require expr работают, выражения должны быть неправильными, но не знаю, что с ним не так.
1 ответ
Решение
Я полагаю, что вы должны попробовать с "Если" вместо RequireAny, как это:
<If "%{REQUEST_URI} =~ m#(/my/InvalidCredentials$|/my/PublicPage/)#">
Require all granted
</If>
<Else>
<RequireAny>
#all checks except the require expr
</RequireAny>
</Else>
Для меня это выглядит проще, понятнее, а для меня - так.
Что касается вашего чека, я не совсем уверен, почему он не работает, все примеры в документах содержат выражение с кавычками, но не уверен, что это просто так, но надеюсь, что этот другой вариант поможет.
В любом случае вот ссылка для примеров Require expr для более быстрой ссылки: Require expr