要望や症状
EC-CUBEと同じ環境化に別サイトを配置して、そのURLにアクセスすると「ページがみつかりません。URLに間違いがないかご確認ください。」というエラーメッセージが表示されることがあります。
理由や原因
この問題は、EC-CUBEのルートディレクトリに配置されている.htaccessファイルが原因です。EC-CUBEでは標準でRewriteRuleが設定されており、すべてのリクエストがEC-CUBEのフロントコントローラー(public/index.php)にリダイレクトされる仕組みになっています。
そのため、存在しないパスへのアクセスはすべてEC-CUBEのルーティングシステムで処理されます。この結果、EC-CUBE配下に配置した独立したディレクトリやファイルは、.htaccessで除外設定を行わない限りアクセスできない状態になります。
解決策
.htaccessでの除外設定による解決
EC-CUBEのルートディレクトリにある.htaccessファイルを編集し、対象のディレクトリをRewriteRuleから除外します。
設定例
# EC-CUBEルートディレクトリの.htaccess
# 既存のRewriteRuleの前に以下を追加
RewriteEngine On
RewriteRule ^bbb($|/) - [L]
# 既存のEC-CUBEのRewriteRule(そのまま残す)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php [QSA,L]
実施手順
- EC-CUBEがインストールされているルートディレクトリの.htaccessファイルをバックアップします
- .htaccessファイルを編集し、対象ディレクトリを除外するRewriteRuleを追加します
- ファイルを保存してブラウザでアクセスを確認します
複数ディレクトリを除外する場合
複数のディレクトリを一度に除外する場合は、以下のように記述できます。
RewriteRule ^(bbb|ccc|ddd)($|/) - [L]
注意事項
.htaccessの編集前には必ずバックアップを取得してください。RewriteRuleの記述順序が重要で、除外ルールは既存のEC-CUBEルールより前に配置する必要があります。また、サーバーによってはmod_rewriteが無効の場合があるため、事前にサーバー設定をご確認ください。