J'essaie de réécrire certaines URL qui apparaissent comme 404 mais je ne peux pas faire fonctionner la réécriture. Les URL ressemblent à ceci /ossobuco-alla-milanese​​/1451114854360.1451114854360?time=1451114851111. Je voudrais supprimer 1451114854360.1451114854360?time=1451114851111 avec une réécriture.

Dans ma configuration nginx, j'ai la règle de réécriture suivante

rewrite "^\/(.*)\/(\d{13}\.\d{13}\?time=\d{13})$" /$1/ permanent;

J'ai testé l'expression régulière dans deux outils de regex en ligne regex101 et regex pal et cela devrait fonctionner mais cela ne semble pas fonctionner sur mon serveur.

1
Aegis 2 janv. 2016 à 16:25

2 réponses

Meilleure réponse

En fin de compte, c'était juste un bloc d'emplacement vraiment simple et le? supprime les arguments.

location ~* ^/(.+)/\d+\.\d+$ {
    rewrite ^/(.+)/\d+\.\d+$ /$1? permanent;
}
0
Aegis 20 avril 2016 à 10:20

Pour faire correspondre la chaîne de requête, utilisez $args:

location / {
    if ($args ~* "^time=\d+") {
        set $args '';
        rewrite "^/(.+)/\d+\.\d+/?$" /$1 permanent;
    }
}

En fin de compte, c'était juste un bloc d'emplacement vraiment simple et le? supprime les arguments.

rewrite "^/(.+)/\d{13}\.\d{13}/?$" /$1 permanent;
1
anubhava 2 janv. 2016 à 17:19