編集方法

制作の度に必ず行っている作業です、公開URLを変更していきます。

【目的】
https://example.com/public/ にインストールしたEC-CUBEを https://example.com に表示させたい。

例として、こういったディレクトリ構成を想定してみます。

root/
 ├ .htaccess ←①
 └ public/
   └ .env ←②
   └ .htaccess ←③

手順

①のドメイン直下の.htaccess に以下を追記

# URLリライト・/public/ディレクトリから/へリダイレクト(管理画面含む)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule (.*) /public/$1 [L]
</IfModule>

②の.env を編集

# ECCUBE_COOKIE_PATH=/public
# となっている場合は以下のように変更↓↓↓

ECCUBE_COOKIE_PATH=/

③の/public/ディレクトリ内の.htaccess に以下を追記

RewriteEngine On

# RewriteEngine Onの後に以下を追加↓↓↓

# /public/ディレクトリから/へリダイレクト(管理画面含む)
RewriteCond %{THE_REQUEST} ^.*/public/
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

問題が起きる場合

これで、リダイレクトが完了するはずですが .envの設定内容(管理画面での設定と同義)によっては上手くいかないことがありました。

管理画面にログインできない(正しいID/PASSを入力しているのに弾かれる)

方法1: デバッグモードをOFFにする。

#デバッグモード OFF (本番環境)
APP_ENV=prod
APP_DEBUG=0

#デバッグモード ON (開発環境)
APP_ENV=dev
APP_DEBUG=1

方法2:管理画面の「コンテンツ管理 > キャッシュ管理」で、キャッシュ削除を行う。
デバッグモードON/OFF でキャッシュ保存先が分かれているのでそれぞれで行う。

方法3:FTPで「/var/cache/」フォルダそのものを削除する。
削除してもフォルダは自動的に再生成されます。一旦リネームしてから削除するのがわかりやすくて良いと思います。

CSSなどのリンクが切れデザインが崩れている

httpsページ内にhttpのリンクが存在する「Mixed Content(混在コンテンツ)」になっている場合がある。

・管理画面の「設定 > システム設定 > セキュリティ管理」のSSLを強制を解除。
・ブラウザキャッシュをクリア。
・どうしようもない場合は、一時的にソース内の相対パスをhttps〜から始まる絶対パスに書き換えて対応したこともありました。

おまけ

WordPressでも同様の操作が可能です。
詳しくはこちらの記事をご覧ください。

1 件のコメントが “【EC-CUBE4】サブディレクトリにインストールしたEC-CUBEをドメイン直下に表示させる” にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です