У нас есть сервер с большим количеством доменов. Каждый домен будет иметь одну или несколько из следующих административных областей, которые мы хотим защитить по IP:
Это фрагмент из конфигурации Apache, которую мы используем для защиты всего этого на всех сайтах:
<Directory ~ "^/home/user/apache/[^/]+/public/((blog/)?wp\-)?admin">
AllowOverride All
Order Deny,Allow
Deny from all
Allow from 123.45.67.89 23.45.67.89 34.56.78.90
</Directory>
Это ограничивает возможность просмотра любой из вышеуказанных папок только с этих IP-адресов. Для большинства сайтов и блогов это работает отлично. Однако на одном небольшом сайте это не работает.
Разница я считать может быть, что admin
папки на этом сайте фактически не существует, а вместо этого RewriteRule
сопоставляется для обслуживания этой страницы со страницы индекса. Что странно, так это то, что это блокирует /admin
и дает 403
ошибка, но это не позволяет IP-адреса, перечисленные в Allow from
правило.
Почему каталог совпадает и запрещает, но не разрешает? Это ожидаемое поведение? Как я могу это исправить?
Для местоположений, не являющихся каталогами, используйте <Location>
вместо того <Directory>
.