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

What does <ifmodule> делать в .htaccess?</ifmodule>

<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>