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

Я разрабатывал сайт со следующей структурой

  • main site + htaccess
    • Fr subdirectory (for French)
    • Подкаталог En (для английского языка)
    • Подкаталог Assets для изображений, js и css

Htaccess содержит сервер http2 push следующим образом:

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

The issue is that the server pushes the style.css also in the French and English subdirectories resulting in a 404 (and then proceeds to load the correct one without server push, being ../assets/base/css/style.css).

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


person Cerby    schedule 13.10.2017    source источник


Ответы (1)


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

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>
person Barry Pollard    schedule 13.10.2017
comment
К сожалению, он находится в htaccess, поэтому сопоставление местоположения не сработает ... Абсолютный путь я не придумал, но боялся, что это потребует дополнительного поиска (сводя на нет преимущество скорости сервера), но это хорошая идея. буду тестировать спасибо! - person Cerby; 13.10.2017
comment
Почему это требует дополнительного поиска? - person Barry Pollard; 13.10.2017
comment
Вы абсолютно правы, это не так. Между прочим, предложение абсолютного пути работает безупречно. Спасибо! - person Cerby; 13.10.2017
comment
Без проблем. Я думаю, вы взяли это из моего сообщения в блоге (https://www.tunetheweb.com/performance/http2/http2-push/), так как конфигурация выглядела знакомо :-) Итак, проверил это, и в нем был абсолютный путь, так что ошибка копирования и вставки, я думаю! - person Barry Pollard; 13.10.2017