Я использую Apache 2.4 и согласно документации, которую я нашел на сайте Apache (http://httpd.apache.org/docs/current/sections.html), в разделе «Как объединяются разделы» говорится, что конфигурации виртуального хоста должны переопределять конфигурации сервера.
У меня есть регулярное выражение конфигурации сервера filesmatch для предотвращения публичного доступа к важным файлам WordPress с использованием логики «заказать запретить, разрешить»:
<FilesMatch "wp-login\.php|xmlrpc\.php|admin-ajax\.php">
Include conf/global_acl.conf
</FilesMatch>
Затем на моем виртуальном хосте у меня есть еще один файл filesmatch, чтобы разрешить определенный доступ к определенным файлам для включения плагина WordPress:
<FilesMatch "^(xmlrpc|wp-trackback)\.php$">
Order Deny,Allow
Allow from wordpress.com
Allow from 123.123.123.123
</FilesMatch>
Моя цель — сделать так, чтобы процесс разрешения конфигурации сервера наследовался виртуальным хостом, а затем дополнительные директивы разрешения анализировались виртуальным хостом. Похоже, это не работает. Если я изменю уровень сервера, удалив файл xmlrpc, виртуальный хост заработает.
РЕДАКТИРОВАТЬ
Чтобы прояснить ситуацию, моя проблема в том, что под виртуальным хостом мне отказывают, хотя я использую IP 123.123.123.123. Я ожидаю, что записи белого списка из конфигурации сервера будут унаследованы виртуальным хостом. Затем, имея дополнительные разрешения в белом списке в конфигурации виртуального хоста, у меня есть DENY FROM ALL в верхней части конфигурации моего сервера.
Есть идеи, что происходит? Спасибо заранее!
решение1
Изменение, внесенное в 2.4, заключалось в замене синтаксисаРазрешить изпо новомуТребовать все предоставленныеи подобное. Смотритедокумент по обновлению ApacheразделКонтроль доступа.
Есть модуль compat, который вы можете использовать, чтобы избежать изменений. Если вы используете его и выбираете Order Deny,Allow
тогда, если у вас нет Deny
операторов, все доступы будут разрешены (см.совместимость с apache: Заказать).
Поэтому либо используйте, Order Allow,Deny
либо добавьте Deny from all
.