Redirigir eliminando sufijos después de 3 segmentos de URL en Nginx

Redirigir eliminando sufijos después de 3 segmentos de URL en Nginx

Esta es la URL que necesito para eliminar el último segmento.(?order=asc)

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

Este es el código que estoy probando:

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

Respuesta1

Las directivas locationy rewriteprocesan elURI normalizadaque no incluye la cadena de consulta (que has llamado "el último segmento").

La cadena de consulta está disponible en la $argsvariable.

ElrewritedirectivaOpcionalmente, puede eliminar la cadena de consulta original agregando a ?al final del valor de reemplazo.

Por ejemplo:

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

Además, en su código de ejemplo:

  • El número de página se captura $3y no$4
  • La try_filesdeclaración probablemente sea redundante ya que Nginx siempre evaluará primero las directivas sety .rewrite

se evalúa primero

información relacionada