EC-CUBEからカラーミーへ引っ越し~商品ページをRewriteEngineで転送

EC-CUBEを使用しているクライアントより、カラーミーへの移転相談がありました。これを機会に全ページSSL対応させたいとのことです。ECサイトにとってはSSL化は急務なのかも知れません。

まずはそれぞれのECサイト用エンジンの違いについて把握しておく必要があります。

  • EC-CUBEの商品ページURL

http://example.com/products/detail.php?product_id=100

  • カラーミーのURL

?pid=100000001

調べた限りでは、カラーミーへの商品登録時には商品IDは自動採番されるらしく、任意の番号を付与することが出来無さそうです。面倒ですが商品個別のリダイレクトを定義して、適切なページに転送させる必要がありそうです。

確実な方法としてApache modrewriteを使って301リダイレクトを行う検証をしてみました。既にこのEC-CUBEのサイトは運用年数も長くそれなりのSEO評価を得ているので、適切にリダイレクトしてやればその評価を継承できます。

幸い.htaccessによるmod_rewriteエンジンが使用出来ることは確認済みです。

EC-CUBE側のサイトで、productsディレクトリに.htaccessファイルを配置していくつかの転送指示を記してみました。今回はQUERY_STRINGを使いました。

EC-CUBE側の商品アドレスにアクセスすると、カラーミー側の新商品ページに転送されることが確認出来たので手応えとしては良さそうです。

RewriteEngine On

RewriteCond %{QUERY_STRING} product_id=134$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=140$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=199$
RewriteRule $  [R=301,L]

上の例ではEC-CUBE側でproduct_idが134、140、199の3商品のみを転送する例ですが、商品数が50以上あるので、それぞれについての転送を記述しなくてはならず、それだけこの.htaccessのサイズ肥大が気がかりではあります。

構文としては、EC-CUBE側が「product_id」でカラーミー側が「pid」というクエリーパラメータ値なので、そこの値だけを変更するだけで.htaccessは簡単に作れます。product_idとpidの相互データさえあれば、awk等のツールを使って一瞬で生成できそうです。Excel等でも作れそうですね。

自分用にサンプルとして記しておきます。

ECCUBE-ID,COLORME-ID
1,50467834
2,50467835
3,50467836
4,50467837
5,50467838
6,50467839
7,50467840
8,50565841
9,50565841
10,50565841
11,50565841
12,50565841
13,50565841
14,50565841
15,50565841
16,60467949
17,60467949
18,60467949
19,60467949
20,60467949

awkで生成する簡単なスクリプト

BEGIN{
	FS=","
	print "RewriteEngine On"
	print ""
}
NR > 1{
	print "RewriteCond %{QUERY_STRING} product_id=" $1 "$"
	print "RewriteRule $ "$2" [R=301,L]"
	print ""
}
END{

}

awkにより生成された.htaccess。100行でも1000行でもawkなら余裕。(Apacheは過負荷になるかも知れませんが)

RewriteEngine On

RewriteCond %{QUERY_STRING} product_id=1$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=2$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=3$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=4$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=5$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=6$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=7$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=8$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=9$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=10$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=11$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=12$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=13$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=14$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=15$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=16$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=17$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=18$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=19$
RewriteRule $  [R=301,L]

RewriteCond %{QUERY_STRING} product_id=20$
RewriteRule $  [R=301,L]

非プログラマーでも、ループ処理の結果が簡単に得られるawkは神アプリ(言語)だと未だに思います。上のawk処理で必要とされるスキルは、

  1. FS(フィールドセパレータ)
  2. NR > 1で2行目から処理を行うことを条件指定
  3. カラム$1、$2の指定

だけ。

この例では特殊文字(エスケープ文字)の知識すら使っていません。もちろん特殊文字がふくまれる場合は知らないと苦戦しますが、それでも大した知識は不要です。
awkはプログラミングビギナーにもコンピュータが最も得意とする処理を手軽に実現出来て、本当に素晴らしいツールだと思います。

「おーくの友だち」のリンクが切れている・・NiftyのHPサービスが終了したことが原因の様です。有用な情報がまたネットから無くなってしまったかと思うと、下手なISPのHPサービスは無意味じゃないかなと思えてきます。Webのリンクは資源ですから永続的に続けて欲しいものです。

関連リンク

コメントを残す