URL 内のカテゴリに基づく 301 リダイレクト URL

URL 内のカテゴリに基づく 301 リダイレクト URL

製品の親カテゴリを含む 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. 

 

関連情報