У меня следующая компоновка каталогов:
/var/www/
example.com/
logs/
html/
stuff/
Apache настроен на обычное обслуживание из /var/www/example.com/html
Я настроил webdav для работы с URL-адресом https://example.com/server-admin
а также разрешить доступ к другим каталогам:
<VirtualHost>
...
Alias /server-admin /var/www/example.com/
<Location /server-admin >
Dav on
AllowOverride None
...
С участием AllowOverride None
Я хочу отключить файлы htaccess, чтобы они не нарушали работу webdav.
Такого рода работы. Но: если я загружаю синтаксически поврежденный файл htaccess, все разваливается из-за внутренней ошибки сервера 500. Я думаю, даже в этом случае файл не используется, apache все равно его разбирает.
Итак, я попытался использовать AccessFilename .davaccess
изменить его на другое имя, которое работает, но не в <Location>
но только глобально в <VirtualHost>
.
Так что делать? Как отключить htaccess в <Location>
или как мне изменить макет, чтобы это работало?
Вам нужно будет использовать <Directory>
контейнер вместо <Location>
контейнер, чтобы применить AllowOverride
директива. Пока AllowOverride
директива имеет контекст "каталога" (это означает, что обычно она разрешена в обоих <Location>
и <Directory>
контейнеры и т. д.) есть конкретное ограничение в котором говорится:
В
AllowOverride
директива работает только в<Directory>
разделы.
Это казалось бы разумным, поскольку .htaccess
файлы относятся к физическим каталогам, а не строго к URL-адресам (хотя URL-адреса часто сопоставляются с физическими каталогами). (The <Directory>
контейнер также обрабатывается намного раньше в запросе. <Location>
контейнеры обрабатываются с опозданием.)
Кстати, вам также нужно установить AllowOverrideList None
на Apache 2.4 полностью отключить .htaccess
файлы. И согласно документы для AllowOverride
:
Когда для этой директивы установлено значение None, а для AllowOverrideList установлено значение None, Файлы .htaccess полностью игнорируются. В таком случае, сервер даже не будет пытаться читать файлы .htaccess в файловой системе.
Я сейчас не понимаю как .htaccess
(файлы конфигурации для каждого каталога) можно условно включить для области файловой системы (под одним виртуальным хостом). Они либо включены, либо нет.
Ссылка:
ОБНОВИТЬ: Решение / обходной путь к этому, вероятно, должен иметь полностью отдельный VirtualHost (возможно, тот же хозяин, но разные порт?) только для WebDAV, который указывает на ту же область файловой системы, в которой .htaccess
полностью отключены. Однако точечные файлы (в первую очередь .htaccess
и .htpasswd
) также защищены по умолчанию, поэтому вам нужно будет переопределить это, если необходимо разрешить доступ для чтения.