<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript "access 1 week"
ExpiresByType text/css "access 1 week"
</IfModule>
Я использую многие из них в моих файлах .htaccess для настройки кеширования, дефляции, заголовков Accept-encoding и прочего. Я заметил, что если я удалю теги открытия и закрытия, все будет работать. Что они делают, и безопасно ли их удалять, если кажется, что все работает правильно?
<IfModule>
- это просто директива, которая проверяет условие «это названный модуль, загруженный apache httpd» (в вашем примере mod_expires). Это позволяет людям создавать условную конфигурацию для различных установок, где определенные модули могут присутствовать или нет.
Лучшая практика - не использовать его без необходимости. В идеале вам следует знать какие модули загружает ваш веб-сервер и, следовательно, какие директивы конфигурации доступны.
Вы всегда можете проверить модули, которые загружает ваш веб-сервер, используя apachectl -M
и apachectl configtest
перед перезапуском вашего веб-сервера должны быть обнаружены все директивы, которые вы использовали без загрузки соответствующего модуля.
Он включает в себя директивы, которые будут применяться только в том случае, если на сервере доступен определенный модуль. Модуль должен быть либо статически скомпилирован на сервере, либо он должен быть скомпилирован динамически и его LoadModule
строка должна быть раньше в файле конфигурации. Эту директиву следует использовать только в том случае, если вам нужно, чтобы ваш файл конфигурации работал независимо от того, установлены ли определенные модули. Его не следует использовать для включения директив, с которыми вы хотите работать постоянно, поскольку он может подавлять полезные сообщения об ошибках об отсутствующих модулях.
В следующем примере MimeMagicFile
Директива будет применяться, только если доступен mod_mime_magic.
<IfModule mod_mime_magic.c>
MimeMagicFile "conf/magic"
</IfModule>