Я пытаюсь настроить параметры в файле 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
, но я тоже не могу заставить это работать.
Буду признателен за любую помощь в этой работе.