【EC-CUBE】ページのURLを静的HTMLで表示するには。
SEOに有効な静的HTML表示にPHPページのURLを変換する。
1)/products/以下に「.htaccess」ファイルを設定する。
mod_rerwiteを利用するので、「.htaccess」ファイルに、下記のように記述して、FTPで/productsディレクトリにアップロードする。
RewriteBase /products ←これは、要らないサーバもある。
RewriteEngine on
RewriteRule ^detail([0-9]+).html+ products/detail.php?product_id=$1 [L]
RewriteRule ^list([0-9]+).html+ products/list.php?category_id=$1 [L]
http://www.ドメイン/products/detail.php?product_id=○○
というURLを
http://www.ドメイン/products/detail○○.html
と変換して、どちらのURLでアクセスしても、同じページが表示されるようにすることになる。
変換されるほうのURLの表示を変えたいときは、RewriteRuleの表記を変えればOK。
例えば、
RewriteRule detail\/([0-9]+)\/? products/detail.php?product_id=$1[L]
とすれば、「products/detail/○○」となる。
この時点で、
http://www.ドメイン/products/detail○○.html
でアクセスできていれば、ここまでの設定はOK。
もし、アクセスできなければ、サーバの設定を確認するなどで、対応。
2)EC-CUBEの管理画面で、システム管理メニューからパラメータを変更する。
半分より下あたりに「DETAIL_P_HTML」という文字列があるので探す。検索したほうが早い;
「DETAIL_P_HTML」の初期値で入っている、
『URL_DIR . “products/detail.php?product_id=”』 を
『URL_DIR . “products/detail”』 に書き換える。
3)テンプレ変更
/data/Smarty/templates/default/list.tpl
/data/Smarty/templates/default/bloc/best5.tpl
/data/Smarty/templates/default/bloc/category.tpl
/data/Smarty/templates/default/mypage/history.tpl
を変更するけれど、管理画面から変更できるので、確認しながらやるべし。
ローカルでファイルを修正してFTPでアップロードする場合は、アップロードしてから、デザイン管理→テンプレート設定の画面で、「この内容で登録する」ボタンをクリックして、テンプレを適用させること。(FTPアップロードしただけでは反映されない)
該当する「/products/detail.php?product_id=」の部分を、「details」に変え、その変数の後ろに「.html」を挿入し。DETAIL_P_HTMLが入っているところも同じように変更。さらに、「/products/list.php?category_id=」も。検索しながら良く見て変更すること。
デザイン管理→ページ詳細設定→「商品一覧ページ」を選択してコードを表示させ、修正。
DETAIL_P_HTMLのある場所を検索して、その後ろの変数の後に、「.html」を追加。3箇所ある。(ver.2.3rc1の場合、L97,L117,L130)
終わったら、「商品詳細ページ」も同様に修正。4箇所ある。(同じく、L324,L330,L349,L359)
<a href=”<!–{$smarty.const.DETAIL_P_HTML}–><!–{$arrProducts[cnt].product_id}–>.html“ ←追加。
「MYページ」はなぜか管理画面から変更できないので、後で直接ファイルを変更してFTPで上げる。
/data/Smarty/templates/default/mypage/history.php
(ver.2.3rc1の場合、L53)
<td><a href=”<!–{$smarty.const.URL_DIR}–>products/detail.php?product_id=<!–{$arrDisp.product_id[cnt]}–>”>
これを↓↓↓へ。
<td><a href=”<!–{$smarty.const.URL_DIR}–>products/detail<!–{$arrDisp.product_id[cnt]}–>.html”>
次に、管理画面のブロック編集へ。「カテゴリ」ブロックを開く。(ver.2.3rc1の場合、L46)
最後に、「オススメ商品」も。4箇所修正。(ver.2.3rc1の場合、L37,L42,L68,73)
<a href=”<!–{$smarty.const.URL_DIR}–>products/detail.php?product_id=<!–{$arrBestProducts[cnt].product_id}–>”>
これを↓↓↓へ。
<a href=”<!–{$smarty.const.URL_DIR}–>products/detail<!–{$arrBestProducts[cnt].product_id}–>.html”>
以上。その他に同様の修正が必要なところがあれば(バージョンアップなどで発生する可能性もあるし。)同じように修正する。
<a href=”<!–{$smarty.const.URL_DIR}–>products/list.php?category_id=<!–{$arrTree[cnt].category_id}–>”
これを↓↓↓へ。
<a href=”<!–{$smarty.const.URL_DIR}–>products/list<!–{$arrTree[cnt].category_id}–>.html”
さらに。
4)GOOGLEサイトマップ用のXMLサイトマップも静的HTMLで出力したい。
GOOGLEサイトマップ用のXMLサイトマップ作成機能についても、同じように、「.html」の拡張子で表示させたい。
/data/class/pages/LC_Page_Sitemap.php
の240行目。(Ver.2.3RC1の場合。)
// :TODO: カテゴリの最終更新日を取得できるようにする
$page = array(“url” => SITE_URL . sprintf(“%sproducts/list.php?category_id=%d”, $mobile, $result[$i][‘category_id’])); ←これを変更。
$arrRet[$i] = $page;
↓↓↓このように変更。
// :TODO: カテゴリの最終更新日を取得できるようにする
$page = array(“url” => SITE_URL . sprintf(“%sproducts/list%d.html“, $mobile, $result[$i][‘category_id’]));
$arrRet[$i] = $page;
264行目も。
for ($i = 0; $i < count($result); $i++) {
$page = array(“url” => SITE_URL. sprintf(“%sproducts/detail.php?product_id=%d”, $mobile, $result[$i][‘product_id’]), ←これを変更。
“update_date” => $result[$i][‘update_date’]);
↓↓↓このように変更。
for ($i = 0; $i < count($result); $i++) {
$page = array(“url” => SITE_URL. sprintf(“%sproducts/detail%d.html“, $mobile, $result[$i][‘product_id’]),
“update_date” => $result[$i][‘update_date’]);
これで、GOOGLE用のXMLサイトマップもリンクは全て静的URLで書き出されます。