
これは最後のセグメントを削除する必要がある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
変数で使用できます。
のrewrite
指令?
オプションで、置換値の末尾に を追加することで、元のクエリ文字列を削除できます。
例えば:
rewrite ^ /$segment_1/$segment_2/page/$page_number/? permanent;
また、サンプルコードでは次のようになります。
- ページ番号はキャプチャされ
$3
、$4
- Nginx は常におよびディレクティブを最初に
try_files
評価するため、このステートメントはおそらく冗長です。set
rewrite
最初に評価される