EC-CUBE3をさくらのレンタルサーバにインストールした時にhtmlを付けさせない方法
過去の記事ではURLに/htmlを付けさせない方法を書いてきました。
EC-CUBE3のURL設定について - AmidaikeBlog
EC-CUBE3のURL設定について2 - AmidaikeBlog
レンタルサーバでEC-CUBE3でのURL設定の仕方について - AmidaikeBlog
レンタルサーバでEC-CUBE3のURLにhtmlを付けさせない方法 - AmidaikeBlog
今回はさくらのレンタルサーバに特化してしまいますが、以下の通りにすればhtmlを無くす事ができます。
クイックインストールを使うのでEC-CUBE3をアップロードをしてインストールされる方は勝手が異なりますのでご注意ください。
今回の方法では、初期ドメイン(sakura.ne.jp)でインストールした後に独自ドメインを割り当てる方法となります。
1.クイックインストール時に初期ドメイン(xxxxxx.sakura.ne.jp)でインストールを行います。その際、ec-cubeをインストールするディレクトリを指定してください。
2.クイックインストールが完了しましたら、独自ドメインの指定ディレクトリを先ほどec-cubeをインストールしたディレクトリに設定します。
3.EC-CUBEをインストールしたディレクトリの配下にある/htmlディレクトリの.htaccessを以下のように変更を行います。
RewriteBase /html
4.さらに、EC-CUBEをインストールしたディレクトリ直下と/app配下の.htaccessを以下の様に修正します。
<FilesMatch "^composer|^autoload|^cli-config|^COPYING|\.(ht|ini|lock|dist|git|sh)$"> order allow,deny deny from all </FilesMatch> <Files ~ "index.php|index_dev.php"> order deny,allow allow from all </Files> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /html/ RewriteRule ^user_data/(.*)$ /html/user_data/$1 [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|css|ico|js)$ [NC] RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
5.http://独自ドメイン/htmlでEC-CUBEのインストーラーが 表示されますので通常のインストールを行ってください。
6.インストールが完了すれば、 app/config/eccube/にファイルが作成されますので、 ファイルマネージャーなどを利用してapp/config/eccube/path.ymlの以下の部分を修正します。
root_urlpath : /html/ ↓ root_urlpath :
7.以上の設定で、htmlをなくしてサイトが表示されます。
8.新規ページを作成する場合、以下のカスタマイズを行う必要がありますので必要な方は修正をしてください。
html/index.php
のif文の内容を下記の該当する部分のように変更してください。
// インストールされてなければインストーラにリダイレクト if ($app['config']['eccube_install']) { $app->initialize(); $app->initializePlugin(); $front = $app['controllers_factory']; // 強制SSL if ($app['config']['force_ssl'] == \Eccube\Common\Constant::ENABLED) { $front->requireHttps(); } $front->match('/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '([0-9a-zA-Z_\-]+\/?)+(?<!\/)')->bind('user_data'); $app->mount('', $front); if ($app['config']['http_cache']['enabled']) { $app['http_cache']->run(); } else { $app->run(); } } else { $location = str_replace('index.php', 'install.php', $_SERVER['SCRIPT_NAME']); header('Location:'.$location); exit; }
src/Eccube/ControllerProvider/FrontControllerProvider.php の
// user定義 $c->match('/'.$app['config']['user_data_route'].'/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '([0-9a-zA-Z_\-]+\/?)+(?<!\/)')->bind('user_data');
を
// user定義 // $c->match('/'.$app['config']['user_data_route'].'/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '([0-9a-zA-Z_\-]+\/?)+(?<!\/)')->bind('user_data');
とコメントアウトしてください。
今回はさくらのレンタルサーバを対象に記述しましたが、他のレンタルサーバでも同様に動くかもしれませんので是非お試しください。
【 2016/09/29 追記】
EC-CUBE3.0.11よりhtmlを削除する機能が提供されました。