.htaccess или httpd.conf

Мне нужно сделать работу по переписыванию URL сейчас.

Я не знаю, должен ли я поместить код в .htaccess или httpd.conf?

ИЗМЕНИТЬ

Каков диапазон действия .htaccess? Будет ли он влиять на все запросы или только на запросы к определенному каталогу, в котором он расположен?


person Paypal    schedule 11.11.2009    source источник


Ответы (4)


Если вам не придется часто менять свои правила, вы должны поместить их в httpd.conf и отключить переопределение в верхнем каталоге, к которому применяются ваши правила.

AllowOverride None

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

Всякий раз, когда вам нужно изменить свои правила, вам придется перезапустить сервер apache, если вы поместите его в свой httpd.conf, в отличие от того, что они мгновенно обнаруживаются в файлах .htaccess, потому что он читает их все при каждом запросе.

Вы можете легко сделать это с помощью плавного перезапуска с помощью инструмента apachectl, чтобы избежать прерывания любых текущих обслуживаемых запросов.

apachectl graceful

Если вы не собираетесь отключать переопределение, вы можете просто использовать только .htaccess.

Редактировать в ответ на ваше редактирование:

Допустим, у вас есть запрос на www.example.com/dir1/dir2/dir3/file.

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

person Mike    schedule 11.11.2009
comment
Будет ли он сканировать .htaccess, если для AllowOverride установлено значение none? - person Paypal; 11.11.2009
comment
Этого не произойдет, вам придется поместить все ваши правила в теги ‹Directory› в httpd.conf, если вы выключите переопределение. - person Mike; 11.11.2009

Простота использования и ремонтопригодность IMO (просто перейдите в нужный каталог от имени любого пользователя с правами доступа) = .htaccess, но он анализируется повторно, а не один раз в httpd.conf, где лучше всего установить сверхвысокий объем.

person Jé Queue    schedule 11.11.2009

Здесь есть три проблемы с точки зрения того, что «лучше»:

  • производительность
  • управление
  • безопасность

.htaccess медленнее, сложнее в управлении и потенциально менее безопасен. Если у вас есть доступ к httpd.conf, то размещать правила там может быть проще (в одном месте), быстрее ("AllowOverrides None" означает, что сервер не ищет в текущем каталоге и любых родительских каталогах файл переопределения для анализа и отслеживания), а поскольку файлы .htaccess отсутствуют в каталоге веб-сайта, их нельзя редактировать (а если они будут созданы, они будут проигнорированы).

person jeffmcneill    schedule 01.12.2016

Вы можете использовать их оба. ИМХО, .htaccess будет немного лучше

person at8eqeq3    schedule 11.11.2009