[eccube]2系から3系への引っ越しリダイレクト設定

ちょっと危なかった

何がしたいかという話

今まで2系でやってたのを3系に引っ越しすることになった。商品の移行はプラグインでできたので商品IDはそのままだけど、ECCUBEの仕様としてディレクトリ構成が変わる。それに対応する必要がある。

加えて、2系はECCUBE単体じゃなくてMovableTypeと組み合わせてた、つまりはドメイン直下にECCUBEが無い状態で、ディレクトリを一つ噛ませたところに設置されている。3系はドメイン直下にECCUBEのトップページが来てる。

調べた

まあリダイレクトといえば.htaccessなわけで。
商品情報はcsvでDLしてあるから商品IDは揃ってるんだけど、どうやら一個ずつ書いていかなくてもいいっぽい。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} product_id=(.+)
RewriteRule ^products/detail.php /products/detail/%1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^products/list.php /products/list [R=301,L]

商品詳細ページは最初の3行のところでやってくれる。
ドメインも書かずに済むから便利ね

設置箇所

凡ミスで詰みかけた。

eccubeはあっちこっちに.htaccessがあるけど、一番浅いディレクトリじゃなくて「html/.htaccess」に書かないと反映されない。

言い換えると、「index.php」「index_dev.php」があるところに置く。

転送結果

「hogehoge.com/products/detail.php?product_id=99」にアクセスすると
「hogehoge.com/products/detail/99?product_id=99」に転送される。
パラメータがくっついてる。

嫌だったら一個ずつ転送掛けましょう。excelとか使えばすぐに作れる。

下層ディレクトリから直下への転送

ちょっといじるだけ。

「hogehoge.com/store/」から「hogehoge.com/」に変わるなら、

RewriteRule ^products/detail.php /products/detail/%1 [R=301,L]

これを

RewriteRule ^store/products/detail.php /products/detail/%1 [R=301,L]

こう。

簡単な話。

コメント

タイトルとURLをコピーしました