EC-CUBE 2.13 で、トップページだけはドメイン直下でアクセスできるようにする


動機

html/ の中に data/ を入れるのが気持ち悪かった。

ネットに散見されるこの手のハック、そのままhtmlをドキュメントルートに持って行くという対処が多かった。

が、ロジック部とデザイン部が別れてないの、不安じゃありません?
ちゃんとMVWの概念に従って、この辺は別れていて欲しいと想い、色々頭をひねってみた。

そもEC-CUBEがMVWになってないという意見は言うもんじゃあない

前提

  • URL欄にドメイン叩けばトップページが閲覧できる環境にしたい。/html/を付与したくない。
  • トップページ以外は/html/が付与されていても問題なし。
  • サーバで.htaccessが書ける。mod_rewriteがある程度使える。

実装

インストール後、編集するファイルは2つ。

  1. ドキュメントルートの.htaccess
  2. data/config/config.php

.htaccess

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /
  RewriteCond %{REQUEST_URI} !^/html/.*$
  RewriteRule ^(.*)$ /html/$1
</IfModule>

data/config/config.php

define('ROOT_URLPATH', '/');
define('HTTP_URL', 'http://{ドメイン}/');
define('HTTP_URL', 'http://{ドメイン}/');

define('ROOT_URLPATH', '/html/');
define('HTTP_URL', 'http://{ドメイン}/html/');
define('HTTP_URL', 'http://{ドメイン}/html/');

雑感

実は.htaccessだけでも対応可能なんだと思うけれど、config.php側で制御してあげた方が問題起きづらいのかなーとも。
実はまだモヤッとしてる部分があるので、ご意見頂ければ幸い。