
製品の親カテゴリを含む URL をリダイレクトする方法を知っている人はいますか? 基本的に、大量の製品を自分が作成したシンプルなランディング ページにリダイレクトしたいので、製品ごとにリダイレクトするのではなく、親カテゴリ (メーカー) をターゲットにして、1 つのランディング ページにリダイレクトしたいと考えています。
つまり、次のようになります。
https://example.com/product/baader/baader-600/baader-600-belts/belt-rubber/
https://example.com/product/baader/baader-600/baader-600-belts/belt-urethane/
https://example.com/product/baader/baader-600/baader-600-parts/cover/
https://example.com/product/baader/baader-600/baader-600-parts/washer/
すべてがこの 1 つのランディング ページにリダイレクトされます。
https://example.com/replacement-parts/baader/baader-600/
したがって、「product/baader/baader-600/」を含むすべてのものをターゲットにして、URL の最後の部分 (/baader-600-belts/belt-rubber/) を削除し、「/replacement-parts/baader/baader-600/」にリダイレクトすることになると思いますが、これを RewriteRule にする方法がわかりません。
答え1
ServerFault へようこそ。
これを実現するために複雑な書き直しは必要ありません。次のコードで動作します...
location /product/baader/baader-600/ { return 302 /replacement-parts/baader/baader-600/; }
同等のものを書き換えます...
rewrite ^/product/baader/baader-600/ http://example.com/replacement-parts/baader/baader-600/;
301 リダイレクトが必要な場合は、以下に相当するものを使用します...
location /product/baader/baader-600/ { return 301 /replacement-parts/baader/baader-600/; }
rewrite ^/product/baader/baader-600/ /replacement-parts/baader/baader-600/ permanent;
答え2
製造元が動的である必要があると仮定すると、そのようなルールを追加できます。
location ~ /product/(.+) {
rewrite ^.*(\/product\/)([\w|-]*)\/(.*)\/.*$ /replacement-parts/$2/$3 permanent;
}
Here $2 is a second match group for manufacturer, and $3 contains product part.