AllowOverride All — директива, за счет которой в конфигурации Apache задается использовать файлы .htaccess или нет. .htaccess в свою очередь позволяет задавать определенные настройки для каждого подкаталога, созданного для сайта переопределяя настройки виртуального хоста.
AllowOverride All и файлы .htaccess
Конфигурационный файл виртуального хоста Apache в общем виде выглядит следующим образом:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
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