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

Другие вопросы по тегам