J'ai une collection de mémos dans un dossier /memos/items/
. Un seul mémo contenait auparavant une déclaration d'inclusion SSI pour une partie d'en-tête HTML, jusqu'à et y compris l'ouverture , suivi du code HTML du contenu du mémo, et à la fin une autre déclaration d'inclusion SSI pour le pied de page qui contenait le code pour fermer le document HTML, comme ceci :
Dies ist ein Testeintrag.
Man soll den Tag
nicht vor dem Abend loben
Cela fonctionne plutôt bien, mais je n'aime pas les déclarations SSI dans le fichier d'élément unique. Je préférerais demander à nginx de servir automatiquement l'en-tête et le pied de page, avec une configuration similaire à
location ~ /memos/[\w-]+$ {
sendfile /memos/before.html;
sendfile $request_filename;
sendfile /memos/after.html;
}
Est-ce possible ? Y a-t-il un module nginx fournissant une directive sendfile
qui fonctionne comme décrit ?
Les avantages seraient les suivants :
- Le dossier contenant les éléments contient uniquement le contenu pur, sans directive supplémentaire. En fournissant une fonction "Recherche", le dossier pourrait donc être
grep
é. - La redondance est évitée (les instructions "include" pour l'en-tête et le pied de page n'existent qu'une seule fois, pas dans chaque fichier dupliqué.
MODIFIER (01/07/2016)
Entre-temps, j'ai trouvé une solution avec SSI avec les points d'avantage ci-dessus (c'est-à-dire en fournissant uniquement le contenu des fichiers d'éléments, sans balises SSI), en changeant simplement de perspective : au lieu d'inclure l'en-tête et le pied de page dans chaque fichier d'élément individuel, j'inclus le fichier d'élément dans un modèle maître unique.
Inspiré de la proposition sur le site nginx ; je configure
location /memos/ {
ssi on;
default_type text/html;
location ~ /memos/([\w-]+)$ {
set $inc /memos/items/$1;
rewrite ^ /memos/template.html break;
}
}
et j'utilise la variable $inc
dans le template.html
maître :
...
Cependant, je ne vais pas clôturer ce sujet car je suis toujours intéressé par la question initiale de savoir s'il est possible de demander à nginx de composer une seule réponse sous forme de séquence de plusieurs fichiers.