AllowOverride All

AllowOverride All — директива, за счет которой в конфигурации Apache задается использовать файлы .htaccess или нет. .htaccess в свою очередь позволяет задавать определенные настройки для каждого подкаталога, созданного для сайта переопределяя настройки виртуального хоста.

 

AllowOverride All и файлы .htaccess

 

Конфигурационный файл виртуального хоста Apache в общем виде выглядит следующим образом:

<VirtualHost *:80>

ServerName example.com
ServerAlias www.example.com

ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory />
Options -ExecCGI -Indexes -Includes +FollowSymLinks
AllowOverride All

</Directory>

SetEnvIf X-Forwarded-Proto https HTTPS=on

</VirtualHost>

 

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

 

Директория определена только одна <Directory />, их может быть больше и для каждой можно задать некоторые опции:

-ExecCGI — не выполнять CGI скрипты

-Indexes — не выводить содержимое каталога при отсутствии index.php или index.html

-Includes — не разрешать Server-Side Includes, которая представляет собой файлы .shtml, собираемые из других html файлов и cgi-скриптов

+FollowSymLinks — как следует из названия директивы, Apache сможет переходить по символьным ссылкам

 

 

AllowOverride All — указывает, что для корневого каталога виртуального хоста и всех вложенных нужно использовать .htaccess

.htaccess может быть своим в любом каталоге, что позволяет размещать любое количество сайтов или разделов сайта, доступных в дальнейшем по адресам  example.com/sub, example.com/2 и т.д.

 

Такое поведение может быть очень удобно, .htaccess всегда используются на серверах с большим количеством сайтов: серверах хостинг провайдеров. Оно позволяет, например, задавать для каждого каталога свою кодировку, в которой веб-сервер будет отдавать ответ клиенту..

 

Если с сервера работает одно приложение — один сайт, AllowOverride  лучше выставлять в None и задавать все настройки в конфигурационном файле. Это означает несколько большую трудоемкость процесса разворачивания сайта, но позволяет добиться лучшей производительности. Особенно при высоких нагрузках.

 

Читайте про другие приемы оптимизации Apache