
Dies ist die URL, die ich brauche, um das letzte Segment zu entfernen(?order=asc)
https://www.example.com/segment_1/segment_2/page/the_number_goes_here/?order?asc
Dies ist der Code, den ich versuche:
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;
}
Antwort1
Die location
und rewrite
Richtlinien verarbeiten dienormalisierte URIwelches die Abfragezeichenfolge (die Sie „das letzte Segment“ genannt haben) nicht enthält.
Der Abfragestring steht in der $args
Variable zur Verfügung.
Derrewrite
Richtliniekann optional die ursprüngliche Abfragezeichenfolge entfernen, indem ?
an das Ende des Ersetzungswerts ein angehängt wird.
Zum Beispiel:
rewrite ^ /$segment_1/$segment_2/page/$page_number/? permanent;
Außerdem in Ihrem Beispielcode:
- Die Seitenzahl wird erfasst
$3
und nicht$4
- Die Anweisung ist wahrscheinlich überflüssig, da Nginx die und -Direktiven
try_files
immer zuerst auswertet .set
rewrite
wird zuerst ausgewertet