1 votes

nginx différents try_files basés sur le paramètre de la requête

location / {
    try_files "/wp-content/cache/all/${uri}index.html" $uri $uri/ /index.php?q=$uri&$args;
}

Mais si un éditeur visuel est utilisé, je ne veux pas utiliser le cache. Donc ça devrait être

location / {
    if ($args ~ visual-editor){
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    try_files "/wp-content/cache/all/${uri}index.html" $uri $uri/ /index.php?q=$uri&$args;
}

Sauf que ça ne marche pas parce que nginx est restrictif et bizarre pour quelqu'un qui a surtout fait des configurations apache.

J'ai essayé les emplacements nommés, j'ai essayé un sous-emplacement pour le rendre heureux d'utiliser try_files, je ne veux pas de réécriture, l'utilisation du code d'erreur avec des emplacements nommés entraînera la suppression des paramètres de requête, ce qui ne peut pas arriver.

L'idée est simple, ne pas charger le fichier html en cache s'il y a une exclusion que je définis. Mais rien ne semble fonctionner et l'internet donne des réponses qui ne répondent jamais à ma question, alors je la pose ici.

0 votes

Idéalement, votre code personnalisé ne devrait pas permettre à ces pages d'être mises en cache.

0 votes

Ce n'est pas mon code, et le module pour wordpress qui fait la mise en cache devrait en fait mettre en cache les pages qui ont des paramètres GET car parfois dans wordpress ce sont des pages différentes. Il y a bien des exclusions mais elles ne fonctionnaient pas, une des possibilités étant que les exclusions dépendent de la création de règles htaccess.

1voto

HugoFS Points 313

Vous ne pouvez pas mettre try_files dans un if mais vous pouvez définir une variable dans le bloc if et l'utiliser pour invalider le premier terme de l'expression try_files déclaration.

Par exemple :

server {
    ...
    set $cache /wp-content/cache/all;
    if ($args ~ visual-editor) { set $cache /nonexistent; }

    location / {
        try_files $cache${uri}index.html $uri $uri/ /index.php?q=$uri&$args;
    }
    ...
}

Voir cette mise en garde sur l'utilisation de if .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X