さくらインターネットにインストールしているEC-CUBEのURLが、トップページは「http://ドメイン名/index.php」、カテゴリーページは「http://ドメイン名/index.php/products/list?category_id=1」という感じで、URLの中にindex.phpを入れないとサイトが機能していませんでした。明らかに「index.php」が邪魔ですよね…
.htaccessに1行追加するだけで、URLから「index.php」を取り除き、「http://ドメイン名/」や「http://ドメイン名/products/list?category_id=1」などにアクセスできるようになりましたので、その方法をご紹介したいと思います。
EC-CUBE3でサイトURLからindex.phpを取り除く方法
EC-CUBE3のサイトURLから「index.php」を取り除くには、EC-CUBEがインストールされているフォルダにある.htaccessを編集します。
<IfModule mod_rewrite.c> RewriteEngine On # Authorization ヘッダが取得できない環境への対応 RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC] RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
上記のような記述があるかと思いますので、「RewriteEngine On」のすぐ下に「RewriteBase /」を追加します。
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # Authorization ヘッダが取得できない環境への対応 RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC] RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
これだけで、サイトURLから「index.php」を取り除くことができます。
あとがき
同じような現象で困っていたら、ぜひ参考にしていただければと思います。
なお、EC-CUBE3のサイトURLから「html」を取り除く方法も過去に紹介していますので、よかったらチェックしてみてください。