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

Предварительная загрузка ссылки с использованием директивы файлов в .htaccess

В настоящее время я предварительно загружаю файлы шрифтов для одной веб-страницы в WordPress.

Так https://example.com не предварительно загружен. https://example.com/test/ предварительно загруженный файл шрифта.

Это то, что у меня есть .htaccess.

<Files "/test/">
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin"
</Files>`

Ссылка работает нормально, вот с условной загрузкой борюсь. Пытался добавить подстановочные знаки, плюс полный URL и т. Д., Но без радости.

Правильно ли я думаю, что дело не в синтаксисе, а в том, что нужно разрешить, прежде чем он заработает?

Это синтаксис ...

В <Files> директива совпадает с имена файлов только (например, foo.php) - когда запрос сопоставляется с физическими файлами в файловой системе. Поскольку это WordPress, я предполагаю /test/ это даже не каталог файловой системы - это просто URL-путь?

Вы можете использовать mod_setenvif для установки переменной среды, когда запрашивается этот URL-путь, а затем установить Header условно на основе этой переменной среды.

Это должно пойти перед фронт-контроллер WordPress, в верхней части вашего .htaccess файл.

Например:

SetEnvIf Request_URI "^/test/" PRELOAD_FONT
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin" env=PRELOAD_FONT

Регулярное выражение ^/test/ соответствует любому URL-пути, который начинается /test/. Если это должно только соответствовать единственному URL /test/ затем добавьте к регулярному выражению привязку конца строки: ^/test/$.

Обратите внимание на дополнительные env=PRELOAD_FONT аргумент в конце Header директива. Заголовок устанавливается только тогда, когда PRELOAD_FONT переменная окружения, установленная предыдущим SetEnvIf директива, также установлена.