Как бороться с http2-push и подкаталогами?

Я занимаюсь разработкой сайта со следующей структурой

  • основной сайт + htaccess
    • Подкаталог Fr (для французского)
    • En подкаталог (для английского)
    • Подкаталог Assets для изображений, js и css

Htaccess содержит HTTP-запрос сервера следующим образом:

<IfModule http2_module>
SetEnvIf Cookie "cssloaded=1" cssloaded
<filesMatch "\.([hH][tT][mM][lL]?)">
Header add Link "<assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded
Header add Set-Cookie "cssloaded=1; Path=/; Secure; HttpOnly" env=!cssloaded
</filesMatch>

Проблема заключается в том, что сервер помещает style.css также во французские и английские подкаталоги, что приводит к значению 404 (а затем переходит к загрузке правильного без подталкивания сервера, являющегося ../assets/base/css/style.css).

Как избежать этого ИЛИ (желательно) проталкивать файл во всех каталогах, но указывать на правильный файл?

2

Решение

Вы нажимаете таблицу стилей относительного пути:

Header add Link "<assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded

Почему бы не выдвинуть абсолют?

Header add Link "</assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded

Или, в качестве альтернативы, используйте location или locationMatch вместо fileMatch:

<locationMatch "^/$">
Header add Link "<assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded
Header add Set-Cookie "cssloaded=1; Path=/; Secure; HttpOnly" env=!cssloaded
</locationMatch>
<locationMatch "^/en/$">
Header add Link "<../assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded
Header add Set-Cookie "cssloaded=1; Path=/; Secure; HttpOnly" env=!cssloaded
</locationMatch>
<locationMatch "^/fr/$">
Header add Link "<../assets/base/css/style.css>;rel=preload;as=style" env=!cssloaded
Header add Set-Cookie "cssloaded=1; Path=/; Secure; HttpOnly" env=!cssloaded
</locationMatch>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]