ホーム > 技術情報 > ECCUBE(2系、3系)で一時的にサイトを閉鎖しておきたい場合(別ページリダイレクト)

ECCUBE(2系、3系)で一時的にサイトを閉鎖しておきたい場合(別ページリダイレクト)

投稿日 : 2017年06月21日   更新日 : 2019年10月12日
カテゴリー : ECCUBE / 技術情報
ECCUBE(2系、3系)で一時的にサイトを閉鎖しておきたい場合(別ページリダイレクト)の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして6年~の経験があります。WordPressは2年~の経験があります。その他、jQuery、HTML、CSSも使用します。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

ECCUBEってメンテナンス用ページにリダイレクトさせるって処理、簡単にできないものなのか…?

メンテナンス中なんてたっくさんあるだろうにどうして標準実装じゃなくてプラグイン頼みなのか。

私が調べられなかっただけで実はあるのかな?

結構シェアがあるっぽいオープンソースなのに情報がいまいちなのはなぜなんだぜ?

今回は

ECCUBE稼働中サイトを、一旦ネットショップやめるからアクセスがあったらメンテナンスページ(ただのHTML)にリダイレクトさせてほしいよ!
でも管理画面には一応アクセスできるようにしてほしいよ!

というご依頼でした。

通常だったらこのフォルダ以下にアクセスしたら指定場所にリダイレクトしてね!っていうのをhtaccessで書けば終了。

ただ、これはECCUBEだった。
簡単にはいかなかった。
私も気づくのが遅かったとはいえ、丸一日かかってしまうとは…不覚。

3系の場合

保存場所はhtmlフォルダ内に.htaccessを格納。
こんな感じになると思う。

<ifmodule mod_rewrite.c="">
    #403 Forbidden対応方法
    #ページアクセスできない時シンボリックリンクが有効になっていない可能性あります、
    #オプションを追加してください
    #Options +FollowSymLinks +SymLinksIfOwnerMatch

    RewriteEngine On

    # Authorization ヘッダが取得できない環境への対応
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

    # さくらのレンタルサーバでサイトへのアクセスをSSL経由に制限する場合の対応
    # RewriteCond %{HTTP:x-sakura-forwarded-for} !^$
    # RewriteRule ^(.*) - [E=HTTPS:on]

##### ▼ここから 再開するときはこの記述を有効にする▼ #####
#    RewriteCond %{REQUEST_FILENAME} !-d
#    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
#    RewriteRule ^(.*)$ index.php [QSA,L]
##### ▲ここまで 再開するときはこの記述を有効にする▲ #####

##### ▼ここから一時休止中の記述 再開するときはこの記述を削除する▼ #####

# /htmlなど、トップページのアクセスを除外するため、RewriteCond %{REQUEST_FILENAME} !-d (ディレクトリ許可)は除外
# cssなど読み込めないと困るので、ファイル除外は入れる
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]

# /admin以外がリダイレクト対象
    RewriteCond %{REQUEST_URI} !(/admin)

# リダイレクト先を指定する
# 今回は一時的なので302にした
    RewriteRule ^(.*)$ /xxxxxx.html [R=302,L]

# 上記の条件にかからなかったもの(/admin以下のURL)は通常と同様の処理を行う
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
    RewriteRule ^(.*)$ index.php [QSA,L]

##### ▲ここまで一時休止中の記述 再開するときはこの記述を削除する▲ #####
</ifmodule>

/html/adminで管理画面だけど、adminって物理フォルダないじゃんね。

それに気づくまでに遅かった。
それからトップページはリダイレクトできたけど、その他ページはリダイレクトできてないじゃん!っていうのにはまった。
正規表現ってわからなくなるよ…

RewriteRuleは上から順番に処理していって、当てはまらなければ処理しないんだね。

当てはまったらそこで処理終了なんだね。そこを考えて書かないといけない。

2系の場合 ※今回は2.3.3だった

※他の2系は知らないのでそのまま適用できるか不明です

3系と同じく、保存場所はhtmlフォルダ内に.htaccessを格納。

<ifmodule mod_rewrite.c="">
 ##### ▼ここから一時休止中の記述 再開するときはこの記述を削除する▼ #####
 # 必要に応じて入れる
 #    Options +FollowSymLinks +SymLinksIfOwnerMatch
    RewriteEngine On
 # /htmlなど、トップページのアクセスを除外するため、RewriteCond %{REQUEST_FILENAME} !-d (ディレクトリ許可)は除外
 # phpページにアクセスしていることも多いのでファイル RewriteCond %{REQUEST_FILENAME} !-f も除外
    RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg)$ [NC]
 # /adminとメンテナンスページはリダイレクト対象外
    RewriteCond %{REQUEST_URI} !(/admin)
    RewriteCond %{REQUEST_URI} !(/xxxxxxxxxx.html)
 # リダイレクト先を指定する
    RewriteRule ^(.*)$ /xxxxxxxxxx.html [R=302,L]
</ifmodule>
 ##### ▲ここまで一時休止中の記述 再開するときはこの記述を削除する▲ #####

以上。

楽しい物造りを

NaoLight

自分のブログやサイトを、楽しく作ってもらえたら。

プログラムを使って望み通りに、拡張しやすく、自分の思うように。

できたときに、すごく楽しい!と思ったら。

控えめに言って、「最高です」。

NaoLight -NAOT-(なおらいと、なおと、と呼んでください)はそんな思いをカタチにする、WordPressのテーマです。

ご購入はこちらからお願いします(BOOTHへ移動します)。

Nao Light-NAOT-公式サイト