ECCUBE4 下層ディレクトリのhtaccessでURLのhttps、wwwあり・なしを統一する方法
「wwwあり」に統一する方法についても記載しています。
当初、自分が制作した他のサイトのhtaccessから「https・wwwなし」に統一する部分をコピーして使おうとしたのですが、500エラーが出て動きませんでした。
これは、ルートディレクトリ用の記述を下層ディレクトリのhtaccessでそのまま使おうとしたのと、ECCUBE独自の仕様が原因でした。
httpsに統一する
httpsに統一する場合、ECCUBE4であればhtaccessよりも管理画面から設定する方が手っ取り早いのでおすすめです。ECCUBE4の管理画面にログインし「設定」→「システム設定」→「セキュリティ管理」をクリック。
「SSLを強制」にチェックを入れて「登録」ボタンを押せば、URLがhttpsに統一されます。
wwwなしに統一する
「sample.com」ドメインの「store」フォルダに設置されたECCUBE4のURLをwwwなしに統一する際の設定は以下のようになります。<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} www\.sample\.com$
RewriteRule ^(.*)$ https://sample.com/store/$1 [R=301,L]
</IfModule>
重要なのは、下層ディレクトリ(この場合/store)のhtaccessの一番上に、上のコードを記載する事です。
もしhtaccessの末尾などに上のコードを入れると、ECCUBE4独自のURL処理などが一通り終わった後に上のコードが走ってしまうため、500エラーなどが発生します。
wwwありに統一する
wwwありに統一する設定は、以下のようになります。<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.sample.com/store/$1 [R=301,L]
</IfModule>
こちらも同様に、htaccessの一番上にコードを設置します。