Перенаправление удаление суффиксов после 3 сегментов URL в Nginx

Перенаправление удаление суффиксов после 3 сегментов URL в Nginx

Это URL, который мне нужен для удаления последнего сегмента.(?order=asc)

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

Вот код, который я пробую:

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

решение1

Директивы locationи rewriteобрабатываютнормализованный URIкоторый не включает строку запроса (которую вы назвали «последним сегментом»).

Строка запроса доступна в $argsпеременной.

Therewriteдирективаможно дополнительно удалить исходную строку запроса, добавив a ?в конец заменяющего значения.

Например:

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

Также в вашем примере кода:

  • Номер страницы фиксируется $3и не$4
  • Это try_filesутверждение, вероятно, излишне, поскольку Nginx всегда сначала оценивает директивы setи rewrite.

оценивается в первую очередь

Связанный контент