Использование подстановочных знаков в блоках Apache 2 Location - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь настроить параметры в файле 000-default.conf (Apache2), чтобы требовать аутентификации для определенных URL-адресов, но не для других.

Хитрость в том, что мне нужно включить подстановочный знак в середине строки местоположения. Некоторые примеры, надеюсь, проиллюстрируют, что мне нужно сделать sh.


Пример 1:

a) https://example.com/doc/10.0/TopNav/Default.htm <- аутентификация не требуется </p>

b) https://example.com/doc/10.0/TopNav/Content/fubar.htm <- должна требоваться аутентификация </p>

c) https://example.com/doc/10.0/TopNav/Content/Resources/styles.css <- аутентификация не требуется (или Default.htm не будет отображаться должным образом) </p>

d ) https://example.com/doc/10.0/TopNav/Content/Public/* <- все файлы в этом каталоге не должны требовать аутентификации (примечания к выпуску и др. c.) </p>

Пример 2:

a) https://example.com/doc/20.0/TopNav/Default.htm <- не требуется аутентификация </p>

b) https://example.com/doc/20.0/TopNav/Content/fubar.htm <- должна требоваться аутентификация </p>

c) https://example.com/doc/20.0/TopNav/Content/Resources/styles.css <- аутентификация не требуется (или Default.htm не будет отображаться должным образом </p>

d) https://example.com/doc/20.0/TopNav/Content/Public/* <- все файлы в этом каталоге не должны требовать аутентификации. </p>

Пример 3:

a) https://example.com/doc/current/TopNav/Default.htm <- аутентификация не требуется </p>

b) https://example.com/doc/current/TopNav/Content/fubar.htm <- аутентификация требуется </p>

c) https://example.com/doc/current/TopNav/Content/Resources/styles.css <- аутентификация не требуется (иначе Default.htm не будет отображаться должным образом) </p>

d) https://example.com/doc/current/TopNav/Content/Public/* <- все файлы в этом каталоге не должны требовать аутентификации (примечания к выпуску и т. Д.) c.) </p>


Хорошо. Итак, посмотрим на шаблоны.

  • Все файлы, требующие аутентификации, находятся в /doc/VERSION/TopNav/Content
  • Не все файлы в /doc/VERSION/TopNav/Content могут требовать аутентификации.
  • VERSION - это переменная, которая может содержать от 4 до 7 символов (например: 10.1, 12.2, 14.1, current)

Итак, у меня есть следующие места в моем 000-default.conf файле (исключая все файлы конечных точек дыни и сертификатов, потому что они работают):

<Location />
    # This location will disable authentication at the site root. This works
    MellonEnable "off"
</Location>

<LocationMatch "/TopNav/Content/">
    # This location will enable authentication for this and child folders. This works
    AuthType Mellon
    MellonEnable auth
    Require valid-user
</LocationMatch>

<LocationMatch "/TopNav/Content/Resources/*">
    # This location should disable authentication for all folders (and children) of this folder name. This does not work.
    MellonEnable off
</LocationMatch>
<LocationMatch "/TopNav/Content/Public/*">
    # This location will disable authentication for all folders (and children) of this folder name.
    MellonEnable off
</LocationMatch>

#
#
# The following were my attempts to use RegEx to accomplish what I need; They didn't work either. 
# <LocationMatch "\/Resources\/">
#    MellonEnable off
# </LocationMatch>
# <LocationMatch "\/doc\/.{4,7}\/TopNav\/Content\/Resources\/">
#    # The Regex test is located at https://regex101.com/r/j5Wo9q/2 where you can see it matches the query strings I need
#    MellonEnable off
# </LocationMatch>
#
#
# The following were my attempts to use wildcards. That didn't work either
# <Location "/doc/*/TopNav/Content/Resources/*">
#   MellonEnable off
# </Location>
# <Location "/doc/*/TopNav/Content/Resources/">
#   MellonEnable off
# </Location> 

Прошу прощения за длинный вопрос, но мне сложно найти хорошую документацию по Location директива. Я прочитал здесь одиннадцать вопросов и не нашел ответа. Я прочитал документы по адресу http://httpd.apache.org/docs/current/mod/core.html#location, но они не говорят о моей конкретной проблеме c, за исключением использования регулярного выражения с LocationMatch, но я тоже не могу заставить это работать.

Буду признателен за любую помощь в этой работе.

...