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

Перенести правила htaccess в файлы конфигурации apache

Я запускаю веб-сайт с 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. Не могли бы вы уточнить?