Я запускаю веб-сайт с Joomla на выделенном сервере (Debian), и я читал, что перемещение правил .htaccess в файлы конфигурации apache2 может привести к хорошему повышению производительности (Учебное пособие по HTTP-серверу Apache: файлы .htaccess).
Основной файл конфигурации в / etc / apache2: apache2.conf
В apache2.conf есть, среди других директив, которые я могу понять:
AccessFileName .htaccess
и
Include sites-enabled/
На сервере находится всего один веб-сайт. В сайтах с поддержкой есть еще один файл с дополнительными директивами, 000-default:
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Запуск "locate .htaccess" через оболочку возвращает некоторые результаты: 2 файла в / usr / share / phpmyadmin / и другие результаты в каталогах веб-сайта: / var / www.
Я читал, как использовать блок каталогов для включения правил htaccess в файл конфигурации apache, но в основном у меня есть три сомнения:
1) Куда мне вставить правила htaccess, в apache2.conf или в 000-default?
2) Так как повышение производительности связано с уменьшением количества запросов apache для файлов htaccess в основном каталоге и в подкаталогах, какую директиву мне следует изменить?
AccessFileName .htaccess
или
AllowOverride All
или оба? А насчет AllowOverride All, в каком блоке Directory в 000-default?
3) После отключения AllowOverride All должен ли я включать директивы htaccess для / usr / share / phpmyadmin, даже с инструкцией DocumentRoot / var / www?
Чтобы ответить на вопрос 1, два ответа:
1) неважно. При запуске файлы объединяются в единую конфигурацию в памяти. Разместите конфигурацию там, где это наиболее удобно для вас, администратора сервера. Процитируем IRC-бота на #httpd:
Все файлы конфигурации созданы одинаково. Не имеет значения, в какой из файлов конфигурации вы поместите директиву. Важно то, поместите ли вы ее в соответствующий раздел (или, например). Разместите директивы в том месте, которое имеет для вас смысл и где вы сможете их найти в следующий раз.
2) Вероятно, поместите его на виртуальный хост (то есть в 000-default, внутри блока, потому что это, вероятно, там, где это имеет наибольший смысл, и будет применяться к области, в которой вы этого хотите.
Вопрос 2: измените «AllowOverride All» на «AllowOverride None». Кроме того, никогда и никогда не устанавливайте AllowOverride All, как в вашем примере. Это говорит: "Включите файлы .htaccess для весь файловая система, что явно не то, что вам нужно, как по соображениям безопасности, так и по соображениям производительности. Поэтому, даже если вы для чего-то используете файлы .htaccess, в них все равно должно быть установлено значение «Нет». Помните, что это относится к фактическому каталогу файловой системы '/', а не к корневому каталогу вашего веб-документа.
Вопрос 3: После установки AllowOverride None файлы .htaccess будут полностью игнорироваться. Таким образом, любые директивы должны быть перенесены в основную конфигурацию. Однако я не совсем понимаю, о чем вы спрашиваете в вопросе 3. Не могли бы вы уточнить?