Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

htaccessをいじってECCUBE3にメンテナンスモードを実現する

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

一時的にサイトの機能をクローズしておくことを俗に「メンテナンスモード」などと呼ぶ。

ECCUBE3標準ではこの機能はない。

目次

環境

htaccess を書き換える

Web でよく紹介されている方法はhtaccessの書き換えで対応するものだ。

以下はさくらインターネットレンタルサーバーで、URLにec/htmlが含まれている場合のhtaccess。

SetEnvIf REDIRECT_HTTPS (.+) HTTPS=$1

order deny,allow
allow from all
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ec/html

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

    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>

ec/htmlにtest.htmlを設置し、htaccessを以下に書き換えた。

SetEnvIf REDIRECT_HTTPS (.+) HTTPS=$1
ErrorDocument 503 /ec/html/test.html

order deny,allow
allow from all
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ec/html

    # 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]
  RewriteCond %{REQUEST_URI} !=/ec/html/test.html
  RewriteCond %{REQUEST_URI} !(/ec/html/contact)
  RewriteCond %{REQUEST_URI} !(/ec/html/someadmin)
  RewriteRule ^.*$ - [R=503,L]

    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>

無事、test.htmlが表示された。