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

Apache AllowOverride на основе каталога

Задний план

Мы подошли к тому моменту, когда нам нужно настроить отдельные страницы и приложения, внешние по отношению к нашему унаследованному приложению. Мы хотели бы, чтобы они располагались в подкаталоге общей папки.

Некоторым из этих новых приложений требуются файлы .htaccess.

Вопросы

  1. Возможно ли иметь <Directory> директива для каждого каталога в httpd.conf?
  2. Это лучше, чем размещение .htaccess файлы в каждом каталоге приложения
  3. Мы пока не можем делать несколько серверов, так есть ли другие альтернативы тому, что мы пытаемся выполнить?

Общий вопрос довольно широкий, но я сосредоточусь на ваших конкретных вопросах:

  1. Можно ли иметь директиву для каждого каталога в httpd.conf?

Да, это возможно.

  1. Лучше ли это, чем размещение файлов .htaccess в каждом каталоге приложения?

Они служат разным целям. <Directory> административно определяет функциональность и может ограничивать то, что ваш пользователь может делать с .htaccess файл. Для вашей ситуации (сплоченная команда), возможно, имеет смысл быть более либеральным в вашей AllowOverride использование в процессе разработки.

Как только вы приблизитесь к производству, имеет смысл вернуться к нему и уменьшить его. Бытует мнение, что вы хотите, чтобы ваша среда разработки была максимально приближена к производственной, но пока вы изучаете свои решения, это может дать вам больше гибкости.

Что-то вроде:

<Directory /path/to/application>
    [AllowOverride all](https://httpd.apache.org/docs/2.2/mod/core.html#allowoverride)
    # Custom Options, etc.
</Directory>

Позволил бы вашему .htaccess файл, который будет использоваться для различных аутентификаций, авторизации, перезаписи маршрута и т. д.

  1. Мы пока не можем делать несколько серверов, так есть ли другие альтернативы тому, что мы пытаемся выполнить?

Вы можете посмотреть на контейнеризацию ваших различных приложений. Каждое приложение может жить в своем собственном контейнере, а затем вы можете установить другой контейнер с Nginx, который передает различные URI вашим различным приложениям.