Redirecionar removendo sufixos após 3 segmentos de URL no Nginx

Redirecionar removendo sufixos após 3 segmentos de URL no Nginx

Este é o URL que preciso para remover o último segmento(?order=asc)

https://www.example.com/segment_1/segment_2/page/the_number_goes_here/?order?asc

Este é o código que estou tentando:

location ~ ^/([^/]+)/([^/]+)/page/(\d+)/ {
    try_files $uri $uri/ /index.php?$args;
    # Capture the 2 segments and page number
    set $segment_1 $1;
    set $segment_2 $2;
    set $page_number $4;
    # Redirect without the sufix
    rewrite ^ /$segment_1/$segment_2/page/$page_number/ permanent;
}

Responder1

As diretivas locatione rewriteprocessam oURI normalizadoque não inclui a string de consulta (que você chamou de "o último segmento").

A string de consulta está disponível na $argsvariável.

Orewritediretivaopcionalmente, você pode remover a string de consulta original anexando a ?ao final do valor de substituição.

Por exemplo:

rewrite ^ /$segment_1/$segment_2/page/$page_number/? permanent;

Além disso, no seu código de exemplo:

  • O número da página é capturado $3e não$4
  • A try_filesdeclaração é provavelmente redundante, pois o Nginx sempre avaliará as diretivas sete rewriteprimeiro.

é avaliado primeiro

informação relacionada