2 votes

Comment gérer http2-push et les sous-répertoires ?

J'ai développé un site avec la structure suivante

  • site principal + htaccess
    • Sous-répertoire Fr (pour le français)
    • Sous-répertoire En (pour l'anglais)
    • Sous-répertoire Assets pour les images, js et css

Le htaccess contient un push serveur http2 comme suit :

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

Le problème est que le serveur pousse le style.css également dans les sous-répertoires français et anglais, ce qui entraîne une erreur 404 (puis il charge le bon fichier sans pousser le serveur, à savoir ../assets/base/css/style.css).

Comment éviter cela OU (de préférence) pousser le fichier dans tous les répertoires mais en pointant vers le bon fichier ?

0voto

BazzaDP Points 2585

Vous insérez une feuille de style à chemin relatif :

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

Pourquoi ne pas pousser à l'absolu ?

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

Ou encore, utilisez location ou locationMatch au lieu de 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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X