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

htaccess против httpd.conf?

Верно ли, что вы не должны использовать файлы htaccess, если можете использовать httpd.conf?

На сайте Apache говорится: «В общем, вы никогда не должны использовать файлы .htaccess, если у вас нет доступа к основному файлу конфигурации сервера». Но я не знаю, сколько лет этому совету и актуален ли он до сих пор.

Я работаю над большим сайтом, который использует только файл httpd.conf. Но он становится очень длинным и, конечно же, требует перезагрузки каждый раз, когда вносятся изменения. А учитывая количество сайтов отделов, работающих под основным сайтом (и все они используют файл httpd.conf), это не стимулирует когда-либо вносить изменения.

Теперь мы также запускаем wordpress 3 (в многосайтовой конфигурации). Я хочу протестировать некоторые изменения правил конфигурации, но единственный способ, которым я сейчас могу это сделать, - это продолжать перезапускать apache, чего я бы предпочел не делать на действующем сайте. (в частности, правила перезаписи кажутся некорректными, когда некоторые сообщения в блогах начинаются с "www.", а другие нет)

Я рассматривал возможность включения .htaccess только в папку wordpress, но разумно ли это?

Наш сервер занят (около 60 тысяч просмотров страниц в день, по данным Google), но не облагается слишком высокими налогами.

Какая в настоящее время лучшая практика? Являются ли серверы достаточно грубыми, чтобы возможное небольшое снижение производительности было незначительным по сравнению с простотой управления файлами .htaccess?

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

Если длина является проблемой, рассмотрите возможность разделения разделов конфигурации и использования Включают вместо этого директива. Как говорили другие, можно перезагрузить конфигурацию httpd с помощью 'перезагрузить' или 'перезапустить', и это должно уменьшить неудобства для ваших пользователей. Вам нужно будет обучить своих администраторов использовать «перезагрузить» или «изящно», что проще сказать, чем сделать - многие люди не знают об этих командах, а некоторые им не доверяют.

Вот несколько причин, по которым файлы .htaccess считаются злом:

  1. Файлы .htaccess вызывают путаницу. Однажды я унаследовал сайт, на котором было более 50 файлов .htaccess по всей иерархии каталогов, которые были созданы десятками разных людей за 6 лет. Было очень сложно выяснить «конфигурацию сервера» для какого-либо конкретного каталога или почему определенные функции не работали в определенных каталогах.

  2. Безопасность: любой пользователь, который может писать в файл .htaccess, может переопределить некоторые из ваших тщательно продуманных настроек, которые вы разместили в httpd.conf, если вы не ограничите доступные параметры с помощью AllowOverride. Видеть Когда (не) использовать файлы .htaccess Чтобы получить больше информации.

  3. Аудит: легко создать управление конфигурацией для ваших основных каталогов httpd.conf и Include'd. Это обеспечивает хороший контрольный журнал того, кто что сделал. Когда файлы конфигурации распределены по иерархии каталогов, реализовать управление конфигурацией сложнее.

  4. Потеря контроля: кто-то может создать файл .htaccess и не сообщить вам об этом. Представьте, что кто-то сделал это в 17:00 в пятницу, добавил кучу правил mod_rewrite, которые сделали неправильные вещи и сломали кучу страниц, а затем человек ушел на выходные. Вы не обнаружите проблему до понедельника.

Безусловно, есть случаи, когда файлы .htaccess имеют смысл - если файлов .htaccess мало, и назначение каждого из них хорошо известно.

.htaccess анализируется каждый раз, когда он применяется. Это добавляет небольшую, но ненужную нагрузку на сервер. Файл conf анализируется только при загрузке или перезагрузке сервера.

Использование .htaccess зависит от разрешения доступа в файле conf.

Использование .htaccess дает администратору меньше контроля над безопасностью, поскольку любой пользователь, который может писать каталог содержимого, может переопределить параметры безопасности для этого каталога. (Существуют параметры конфигурации, которые ограничивают эту возможность.) Во многих системах сам веб-сервер может записывать каталоги содержимого, увеличивая потенциальный ущерб в случае взлома сервера.

Использовать apache2ctl graceful заменить перезагрузки веб-сервера. Вы можете настроить доступ к ключам SSL через веб-сервер, если у вас запущены какие-либо службы HTTPS.

Обратной стороной файла .htaccess является то, что вам нужно загружать файл с каждым запросом. Таким образом, это увеличивает накладные расходы. Если все ваши правила находятся в вашем файле conf, они загружаются при загрузке apache, и все. Так что, если вы работаете с вашими сайтами, это на 60 КБ меньше файлов, которые он должен прочитать. Кроме того, никаких правил, которые могут быть предварительно обработаны, не будет, что может вызвать задержку ответа. Сейчас скорость диска, процессора и оперативной памяти в изобилии и высокая, я думаю, для большинства сайтов эффект едва заметен.

Как сказал crimson_penguin, есть причина, по которой apache перечитывает файл конфигурации без его перезапуска. Большинство ОС делают это с reload вместо перезапуска. Если вы используете команду apache2ctl, вы должны запустить apache2ctl graceful Вы можете запустить apache2ctl configtest сначала убедиться, что все в порядке. Конечно, вам нужно будет запустить это как root.