EC-CUBEを静的URLにmod_rewriteで置き換えてSEO対策

短い静的URLにする方法

商品詳細ページとカテゴリーリスト表示の2つを長い動的URLから
静的URLにする方法。SEO的にはすでにどっちでもいい状況だが、
URLのシンプルさ、キレイさ、わかりやすさ、長さなどの考慮。

手順1. .htaccessをアップロード

.htaccessファイルに下記のように記載して第一階層にアップ。

RewriteRule detail([0-9]+)\/? /home/▲▲▲/△△△/public_html/products/detail.php?product_id=$1 [L]
RewriteRule list([0-9]+)\/? /home/▲▲▲/△△△/public_html/products/list.php?category_id=$1 [L]

オレンジの部分は、サイトパス(フルパス)で設置のサーバーに
合った設定にする。把握としてはサイト内リンクを静的にして、
静的URLにアクセスした時にmod_rewriteでサイトパスのファイルに
アクセスを置き換えてその内容を短い静的URLで表示するという構造。

手順2. 管理画面からリンクパス変更

管理ページ > システム設定 > パラメータ設定

DETAIL_P_HTML欄
URL_DIR . “products/detail”

LIST_C_HTML欄 ←※LIST_P_HTML欄ではないので要注意
URL_DIR . “products/list”

手順3. テンプレートファイルのリンクパス変更

detail(商品詳細)は.tplファイル変更箇所なし。
list(カテゴリー表示)はテンプレートの変更が必要で

【bloc/category.tplファイル】
list.php?category_id=

list

【detail.tpl ファイル】
list.php?category_id=

list
の2カ所を置き換える。

以上。

最初は、detail/3 とかスラッシュの入るように公式本にも
あったので、そうやったが商品ページの【新規コメントを書き込む】が
Not Foundになって開いたので何が原因と思ったら、

http://●●●.jp/products/review.php?product_id=3
が正しいのに
http://●●●.jp/products/detail/review.php?product_id=3
と階層がズレたのでdetail3 list2 などのURLで終わるようにした。

余談だが、個人的な好みで.htaccessはピンク色のようにしてある。

RewriteRule ^products/detail([0-9]+)\/? /home/▲▲▲/△△△/public_html/products/detail.php?product_id=$1 [L]
RewriteRule ^products/list([0-9]+)\/? /home/▲▲▲/△△△/public_html/products/list.php?category_id=$1 [L]