
Это 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
.
оценивается в первую очередь