BitMiner - free and simple next generation Bitcoin mining software

【EC-CUBE】商品詳細ページをリダイレクトする

EC-CUBEで、ある商品を別の商品にリダイレクトしたいって思うのは私だけ?
絶対みんなやりたいはずだと思うんだけど、どんぴしゃりの情報が出てこなかったのでメモしておきます。

EC-CUBEで、特定の商品を別の商品にリダイレクトする場合の .htaccess の書き方

転送元URL:http://ドメイン/products/detail.php?product_id=2
転送先URL:http://ドメイン/products/detail.php?product_id=1

id=2 に登録した商品を削除しちゃったから id=1 のページに転送をかけたい、というシチュエーションです。
結論から言うと

RewriteEngine On
RewriteCond %{QUERY_STRING} product_id=2$
RewriteRule $ http://ドメイン/products/detail.php?product_id=1 [R=301,L]

で、できました。

最初は普通に
Redirect permanent 削除したURL 転送先のURL 
つまり

Redirect permanent /products/detail.php?product_id=2 http://ドメイン/products/detail.php?product_id=1

で、できるかと思ったらダメでした。
理由はURLに「?」がついてることです。?以下は「detail.php」というページのパラメーターで、こういうのを「クエリ」と呼ぶんだそうです。
URL的には、

http://ドメイン/products/detail.php

というURLで商品詳細ページが表示されてるんだけど、そこにどの商品の情報を読み込むかというのが ? 以下に書いてあって、「?product_id=1」だったら id=1 の商品情報を読み込んでページを表示するよ?というわけです。

で、こういうクエリつきのURLは、 Redirect permanent なんちゃらじゃダメで、RewriteCond というのを使わないといけないんですって。

上記のコードはネット上の情報をもとに自分で工夫して「動いた」というだけで、基本を理解しておりませんので(¨;)、何か必要なものが抜けてる可能性はあります。
もしお気づきの点があったらご指摘くださいませ。

追記:複数の商品を同一ページに飛ばすには

書き忘れました。
id=2 だけじゃなくて id=3 の商品も同じく id=1 に飛ばしたい場合。
こんなふうに行末に [OR] を付けるとできます。
product_id(商品IDのことですね)が id=2 または id=3 だったら id=1 のページにリダイレクトしてね、ってことですね。


RewriteEngine On
RewriteCond %{QUERY_STRING} product_id=2$ [OR]
RewriteCond %{QUERY_STRING} product_id=3$
RewriteRule $ http://ドメイン/products/detail.php?product_id=1 [R=301,L]

ご参考までに!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク