編集方法
制作の度に必ず行っている作業です、公開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をドメイン直下に表示させる” にあります。