Никогда не используйте файлы .htaccess в продакшене
Новый студент, который изучает Apache вместе со мной, сказал мне сегодня вечером, что одна из вещей, которую он хотел бы узнать, это когда использовать .htaccess
файлы для своего веб-приложения. Ответ никогда, по крайней мере, в продакшене, потому что их не следует включать.
Это взгляд на то, почему, и это не займет много времени.
.хт-что?
Сначала немного предыстории. Не стесняйтесь пропустить это.
.htaccess
файл. Это способ настройки параметров Apache путем помещения файла в обслуживаемый каталог. Любые директивы конфигурации в файле повлияют на каталог и все, что находится под ним.
Пока они включены и используются определенные директивы конфигурации, все в порядке. Не все директивы можно использовать, но они хорошо работают для своих целей.
Подробнее см. Аллововеррайд а также Переопределить индекс класса для .htaccess.
Так в чем проблема?
Давайте посмотрим, что происходит с .htaccess
файл, и тогда мы увидим проблему.
Когда у вас есть доступное средство, подобное этому, где вы можете поместить директиву конфигурации в файл на любом уровне структуры каталогов, и она сразу же заработает для этого каталога и каждого уровня ниже, может произойти только одно…
Когда файлы .htaccess включены, Apache проверит наличие
.htaccess
файл, для каждого каталога в пути, для каждого запроса, который он получает. Если таковые существуют, они будут прочитаны с диска и скомпилированы для каждого запроса. Для… каждого… запроса.
Это означает, что даже если вы их не используете, но они включены, Apache будет опрашивать файловую систему для каждого каталога в пути для каждого обслуживаемого запроса.
Если они есть, то еще хуже. Они будут считываться с диска и компилироваться для каждого запроса. Они должны быть, чтобы поддерживать эту функцию.
Опрос файловой системы и чтение файлов — это не то, чем мы хотим заниматься без необходимости. Это требует времени. Времени не много, но достаточно.
Достаточно получить файл, который вы обслуживаете, а с включенным SendFile даже не нужно будет читать статические файлы. Он может идти прямо с диска на провод. Чтение файлов не требуется, если у вас не включен .htaccess!
Вы должны использовать кеширующий обратный прокси, но это уже другая история.
.htaccess
это удобство. Он предназначен для поддержки пользователей, которые могут управлять своей собственной конфигурацией веб-сервера и держаться подальше от системного администратора. Это не подходит для производственной системы.
Это немного похоже на фаст-фуд, быстро и легко, но не является частью здорового питания.
Итак, что мне делать?
Переместите все директивы конфигурации в ваш основной файл(ы) конфигурации, чтобы вся конфигурация сервера компилировалась при запуске сервера и в памяти для обработки каждого запроса.
Установлен AllowOverride None
для виртуального хоста. Даже лучше по умолчанию для сервера. Рядом с вершиной httpd.conf
вы найдете существующее значение по умолчанию, в зависимости от вашего дистрибутива.
Программа наставничества по основам веб-приложений
Я создаю программу наставничества, чтобы изучить основы разработки веб-приложений. Вы можете работать со мной в качестве наставника, или другие наставники могут использовать его и помогать в улучшении. Все материалы бесплатны и находятся на GitHub. Это даже есть сайт! Я предлагаю бесплатную сессию, чтобы обсудить, как это может работать для вас.