サブディレクトリにインストールしたEC-CUBEをルートディレクトリで表示させる方法をご紹介いたします。
例えば、「example.com/eccube_dir」にインストールしたEC-CUBEを「example.com」で表示するように、表示URLを変更します。
検証した環境
今回検証した環境は以下の通りです。
- EC-CUBE:4.1.2
- サーバー:エックスサーバー
- PHP:7.4.28
- MySQL:5.7.27
- インストール先フォルダ:eccube_dir
- 表示URL:https://example.com
サブディレクトリにインストールしたEC-CUBEをルートディレクトリで表示させる方法
ステップ1. ルートディレクトリの.htaccessの編集
ルートディレクトリ内の.htaccessに以下を追加します。”eccube_dir”の部分はEC-CUBEのインストールディレクトリです。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule (.*) /eccube_dir/$1 [L]
</IfModule>
ステップ2. インストールディレクトリ直下の.htaccessの編集
EC-CUBEをインストールしたフォルダ(eccube_dir)直下にある.htaccessを編集します。「RewriteEngine On」のすぐ下に以下を追加します。
※”eccube_dir”はインストールディレクトリ、”example.com”はドメインです。適宜変更してください。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/eccube_dir/
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
ステップ3. インストールディレクトリ直下の.envの編集
EC-CUBEのインストールディレクトリ直下にある.envを編集します。「ECCUBE_COOKIE_PATH=/【インストールディレクトリ】」という記述があるので(今回の場合はECCUBE_COOKIE_PATH=/eccube_dir)、以下のように変更します。
ECCUBE_COOKIE_PATH=/
これで完了です。「example.com」にアクセスするとEC-CUBEサイトが表示されるようになります。「example.com/eccube_dir」配下へのアクセスは「example.com」にリダイレクトされます(管理画面も同様です)。
リダイレクトされない場合は、ブラウザのキャッシュクリアで改善するはずです。また、表示で問題が出た場合は、/var/cache/prodフォルダ内を削除してEC-CUBEのキャッシュをクリアしてみてください。
注意点
管理画面のURL内に使われている文字列をインストールディレクトリにしてしまうと、リダイレクトループが発生して設定画面にアクセスできなくなってしまいます。
例えば、インストールディレクトリを”shop”にすると、支払方法や配送方法は「/setting/shop/」以下が設定画面になっているので、リダイレクトループが発生してしまいます。
あとがき
WordPressではよくやりますが、EC-CUBEでもBasic認証をかけたサブディレクトリでテスト実装して、実装完了したら表示URLを変更して本公開、みたいな流れで制作することがあります。
覚えておくと役立つケースは結構あると思うので、ぜひ参考にしていただければ幸いです。