Назад | Перейти на главную страницу

Apache: отключить * синтаксический анализ * htaccess в webdav

У меня следующая компоновка каталогов:

/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) также защищены по умолчанию, поэтому вам нужно будет переопределить это, если необходимо разрешить доступ для чтения.